目标是获取如下所示的数据框:
keywords group
word1 x
word2 x
word3 x
在熊猫数据框中将组和关键字作为字符串。
并创建一个如下所示的数据框:
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()))
我得到的输出有两个重要问题。
0|word1|word2|wordName:x,dtype:object
数字似乎是各个单词的索引号,最后一个字符串以描述性详细信息“ Name:x,dtype:object”结尾
27|28|29|30|...|-30|-29|-28|
什么会导致奇怪的格式化问题和数据丢失? lambda函数似乎是一个问题,因为其他所有组件都按预期工作。还有另一种方法可以避免丢失数据吗?
答案 0 :(得分:2)
使用:
df.groupby('group')['keywords'].apply(lambda x: '|'+'|'.join(x))
group
x |word1|word2|word3