我有一個資料框,其中包含串列或字串格式的重復值。
df = Name Email years score
john [[email protected],[email protected], [email protected]] 8 good
[devan,smith ,devan] [[email protected]] [8,6,8] good
我想洗掉該特定單元格中的重復值,而不是比較對應于不同單元格的值。
df_updated = Name Email years score
john [[email protected],[email protected]] 8 good
[devan,smith] [[email protected]] [8,6] good
uj5u.com熱心網友回復:
如果型別為,則使用DataFrame.applymap自定義函式進行元素處理以洗掉重復項list:
df = pd.DataFrame({'Name':['John', ['aa','devan','smith','devan']],
'years':[8, [8,6,8]]})
print (df)
Name years
0 John 8
1 [aa, devan, smith, devan] [8, 6, 8]
df1 = df.applymap(lambda x: list(dict.fromkeys(x)) if isinstance(x, list) else x)
print (df1)
Name years
0 John 8
1 [aa, devan, smith] [8, 6]
如果排序不重要,請使用sets:
df2 = df.applymap(lambda x: list(set(x)) if isinstance(x, list) else x)
print (df2)
Name years
0 John 8
1 [devan, smith, aa] [8, 6]
uj5u.com熱心網友回復:
沒有主資料框,很難猜測您的資料框如何運作。無論如何,這可能是您需要的:
df["Email"].apply(set)
請注意,電子郵件列應為串列。如果您有興趣從其他列中洗掉重復項,比如說名稱列,請嘗試在上述單元格中替換名稱代替電子郵件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/426992.html
