如何将列中的多个元素与所有其他列保持不变?

How can I combine several elements in columns with all other columns stay the same?

我需要帮助将 language 列合并为一行,然后删除重复的列,只需合并相同 Movieyear 的两个不同的 language,和 Id.

CSV中类似的列比较多,请帮我想办法合并those.Here是现有的csv:

f = pd.DataFrame({'Movie': ['name1','name1','name2','name3','name4','name4'],
                  'Year': ['1905', '1905','1906','1907','1910','1910'],
                  'Id': ['tt0283985', 'tt0283985','tt0284043','tt3402904','tt3458360','tt3458360'],
                  'language':['Mandarian','Cantonese','Mandarian','unknown','Cantonese','Mandarian']})

其中 f 现在看起来像:

   Movie  Year         Id   language
0  name1  1905  tt0283985  Mandarian
1  name1  1905  tt0283985  Cantonese
2  name2  1906  tt0284043  Mandarian
3  name3  1907  tt3402904    unknown
4  name4  1910  tt3458360  Cantonese
5  name4  1910  tt3458360  Mandarian

结果应该是这样的:

   Movie  Year         Id             language
0  name1  1905  tt0283985  Mandarian,Cantonese
1  name2  1906  tt0284043            Mandarian
2  name3  1907  tt3402904              unknown
3  name4  1910  tt3458360  Cantonese,Mandarian

所以第1行和第2行除了语言是一样的,我们只需要将它们合并成一行,第5行和第6行也是。 这是我的尝试:

ff = new_f.groupby(by = ['Movie','Year','Id']).agg(','.join)
ff.to_csv("File.csv", index=False)

但是输出很奇怪: 所有其他列都消失了,language 是唯一剩下的列:

language
Mandarian,Cantonese
Mandarian
unknown
Cantonese,Mandarian

...

默认情况下,groupby 将分组键设置为索引,并且您明确要求to_csv 不要导出 索引,

groupby中使用as_index=False:

ff = f.groupby(by=['Movie','Year','Id'], as_index=False).agg(','.join)
ff.to_csv("File.csv", index=False)

或者,导出to_csv中的索引:

ff = f.groupby(by=['Movie','Year','Id']).agg(','.join)
ff.to_csv("File.csv")

注意。如果中间对你没用,你不用设置ff变量,直接链f.groupby(...).agg(...).to_csv(...)

即可

使用以下命令: ff = f.groupby(['Movie','Year','Id']).agg(','.join).reset_index()

应该可以。