groupby和join结果的索引和数据类型包含在输出中

时间:2019-04-26 14:15:05

标签: python pandas

目标是获取如下所示的数据框:

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()))

我得到的输出有两个重要问题。

  1. 输出最终如下所示,以组为索引:
0|word1|word2|wordName:x,dtype:object

数字似乎是各个单词的索引号,最后一个字符串以描述性详细信息“ Name:x,dtype:object”结尾

  1. 对于大型数据集,它将仅在字符串中获得前30个结果和最后30个结果,中间带有省略号,就像预览一样。
27|28|29|30|...|-30|-29|-28|

什么会导致奇怪的格式化问题和数据丢失? lambda函数似乎是一个问题,因为其他所有组件都按预期工作。还有另一种方法可以避免丢失数据吗?

1 个答案:

答案 0 :(得分:2)

使用:

df.groupby('group')['keywords'].apply(lambda x: '|'+'|'.join(x))

group
x    |word1|word2|word3