目标是获取如下所示的数据框:
keywords group
word1 x
word2 x
word3 x
将组和关键字作为 pandas 数据框中的字符串。
并创建一个如下所示的数据框:
x |word1|word2|word3
这是我当前的代码:
我试过使用一个函数:
def preprocessing(dataset, group, keywords):
dataset[keywords] = dataset[keywords].replace(' ', '_', regex = True)
df = dataset.groupby(group)[keywords].apply(lambda x: ','.join(str(x).split()))
df = pd.DataFrame(df)
df[keywords] = df[keywords].replace('_', ' ', regex = True)
return(df)
(其中的 .replace 是为了更容易通过 .join 保留空格)
我试过这样做:
data['keywords'] = ['|%s' %i for i in data['keywords']]
x = data.groupby('group')['keywords'].apply(lambda x: ''.join(str(x).split()))
我得到的输出有两个重要问题。
- 输出最终如下所示,以 group 为索引:
0|word1|word2|wordName:x,dtype:object
其中数字似乎是各个单词的索引号,最终字符串以描述性详细信息“名称:x,dtype:object”结尾
- 对于大型数据集,它只会获取字符串中的前 30 个和后 30 个结果,中间有一个省略号,几乎就像预览一样。
27|28|29|30|...|-30|-29|-28|
什么会导致奇怪的格式问题和数据丢失?这似乎是 lambda 函数的一个问题,因为其他所有部分都按预期工作。是否有另一种不会导致数据丢失的方法?