a= {'A' : [1, 2,3,4],
'B' : ['FOOTBALL','BASKETBALL','HANDBALL','VOLLEYBALL'],
'C' : [[5,10,15,40],[1,4],[20,10,40],[10,40]]
}
如果 B 與 FOOTBALL 不同,我如何從 C 中洗掉元素 40 像這樣:
A B C
0 1 FOOTBALL [5, 10, 15, 40]
1 2 BASKETBALL [1, 4]
2 3 HANDBALL [20, 10]
3 4 VOLLEYBALL [10]
uj5u.com熱心網友回復:
您可以在掩碼中過濾兩邊,并40在串列中洗掉使用 lambda 函式:
df = pd.DataFrame(a)
m = df['B'].ne('FOOTBALL')
df.loc[m, 'C'] = df.loc[m, 'C'].apply(lambda x: [y for y in x if y!=40])
print (df)
A B C
0 1 FOOTBALL [5, 10, 15, 40]
1 2 BASKETBALL [1, 4]
2 3 HANDBALL [20, 10]
3 4 VOLLEYBALL [10]
選擇:
m = df['B'].ne('FOOTBALL')
df.loc[m, 'C'] = [[y for y in x if y!=40] for x in df.loc[m, 'C']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/467786.html
上一篇:將函式應用于多行熊貓
下一篇:應用自己的功能
