嗨,我有一列串列,我想回傳串列相同且順序相同的行。
d = {'id':[1,2,3], 'lst' : [['GG','PP', 'DD'],['DD','PP', 'GG'], ['GG','PP', 'DD']]}
dd = pd.DataFrame(d)
print(dd)
id lst
0 1 [GG, PP, DD]
1 2 [DD, PP, GG]
2 3 [GG, PP, DD]
我這樣做,但我得到錯誤的輸出
dd[dd.apply(lambda row: row.lst==row.lst, axis=1)]
id lst
0 1 [GG, PP, DD]
1 2 [DD, PP, GG]
2 3 [GG, PP, DD]
我想要的輸出是這個
id lst
0 1 [GG, PP, DD]
2 3 [GG, PP, DD]
uj5u.com熱心網友回復:
使用Series.duplicated與keep=False從串列元組:
df = dd[dd['lst'].apply(tuple).duplicated(keep=False)]
print (df)
id lst
0 1 [GG, PP, DD]
2 3 [GG, PP, DD]
uj5u.com熱心網友回復:
有趣的是,當 lst 是一個串列的串列時,重復的資料幀表示它不可散列。我認為熊貓應該通過將串列串列轉換為元組串列來修改串列的重復允許串列,作為接受的答案。
def find_duplicate(df, col):
"""
df: dataframe
col: column name
"""
df_dup = df[df.duplicated(subset=col,keep=False)]
return df_dup
d = {'id':[1,2,3], 'lst' : ['c','b','c']}
dd = pd.DataFrame(d)
print(dd)
print(find_duplicate(dd, 'lst'))
輸出:
id lst
0 1 c
2 3 c
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/345058.html
上一篇:提高pandas應用函式性能
下一篇:在熊貓資料框中映射日期范圍
