我有一个熊猫数据框,其中包含根据一列(ID)重复的数据,但在其他几列中具有不同的值。我的目标是根据ID删除重复项,但将其他列中的信息连接起来。
这是我正在使用的示例:
ID Age Gender Form Signature Level
000 30 M Paper Yes A
000 30 M Electronic No B
001 42 Paper No B
处理后,我希望数据看起来像这样:
ID Age Gender Form Signature Level
000 30 M Paper, Electronic Yes, No A, B
001 42 Paper No B
首先,我用“ Not Noted”填充nAn单元格,以便可以使用groupby函数。我尝试了以下代码:
df = df.groupby(['ID', 'Age', 'Gender'])['Form'].apply(set).reset_index()
这需要连接“表单”列,但是我无法弄清楚如何合并“签名”和“级别”列。有没有人有什么建议?
您可以这样做:
import pandas as pd
df = pd.DataFrame({'ID': ['000', '000', '001'],
'Age': [30, 30, 42],
'Gender': ['M', 'M', ''],
'Form': ['Paper', 'Electronic', 'Paper'],
'Signature': ['Yes', 'No', 'No'],
'Level': ['A', 'B', 'B']})
df = df.groupby(['ID', 'Age', 'Gender']).agg({'Form': set, 'Signature': set, 'Level': set}).reset_index()
print(df)
输出:
ID Age Gender Form Signature Level
0 000 30 M {Electronic, Paper} {No, Yes} {B, A}
1 001 42 {Paper} {No} {B}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句