我需要幫助將language列組合成一行,然后洗掉重復的列,只需組合兩個不同language的相同Movie,year和Id.
CSV 中有更多類似的列,所以請幫我找出一種方法來組合這些列。這是現有的 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
...
uj5u.com熱心網友回復:
默認情況下,groupby將分組鍵設定為索引,并且您明確要求to_csv 不要匯出索引,
用于:as_index=False_groupby
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(...)
uj5u.com熱心網友回復:
使用以下命令:ff = f.groupby(['Movie','Year','Id']).agg(','.join).reset_index()
它應該作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451576.html
上一篇:遞回-對嵌套串列求和
下一篇:類方法中的全域私有函式使用
