我有一個資料df框,其列包含字串串列
df = A B
['-1'] , ['0','1','2']
['2','4','3'], ['2']
['3','8'] , ['-1']
我想獲取所有串列的長度,除了那些我希望它們成為['-1']的串列??的長度['-1']-1
預期輸出:
df = A B
-1, 3
3, 1
2, -1
我試過了
df.apply(lambda x: x.str.len() if not x == ['-1'] else -1)
并得到了錯誤('Lengths must match to compare', (132,), (1,))
我也試過
data_copy[colBeliefs] = data_copy[colBeliefs].apply(lambda x: x.str.len() if '-1' not in x else -1)
但這會產生錯誤的輸出,['-1']而1不是-1
我不確定如何根據資料框中的條目是否等于串列或專案是否在串列中將函式應用于資料框。
編輯:輸出df.head().to_dict()
{'A': {0: ['-1'],
1: ['2','4','3'],
2: ['3','8']},
'B': {0: ['0','1','2'],
1: ['2'],
2: ['-1']}}
uj5u.com熱心網友回復:
你可以這樣做:
df.applymap(lambda x: -1 if (ln:=len(x)) == 1 and x[0] == '-1' else ln)
A B
0 -1 3
1 3 1
2 2 -1
編輯:
如果你使用 python < 3.8 使用以下命令:
df.applymap(lambda x: -1 if len(x) == 1 and x[0] == '-1' else len(x))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/464376.html
