我有以下資料框。
df
Col1 Col2 Col3
0.00 [50.00, 100.00] Tall
50.00 0.00 NaN
[0.00, 50.00, 60.00] 10.00 Short
我想在串列值中應用 max-of-all 并希望獲得以下結果。
Col1 Col2 Col3
0.00 100.00 Tall
50.00 0.00 NaN
60.00 10.00 Short
我試過這個,但沒有成功。
df = df.apply(lambda x: max(map(int, x.split(','))))
任何人都可以對此提供幫助嗎?
uj5u.com熱心網友回復:
方法一:
您可以在此處使用 applymap 它將檢查實體是否為串列,回傳串列的最大值,否則回傳元素原樣:
out = df.applymap(lambda x: max(x) if isinstance(x,list) else x)
方法二:
您可以堆疊資料框,然后在系列上應用該函式,然后取消堆疊以獲得原始形狀:
out = df.stack().apply(lambda x: max(x) if isinstance(x,list) else x).unstack()
print(out)
Col1 Col2 Col3
0 0.0 100.0 Tall
1 50.0 0.0 NaN
2 60.0 10.0 Short
請注意,這假設帶有串列的行是實際的 Python 串列,而不是串列的字串表示。
uj5u.com熱心網友回復:
你也可以使用這個:
df = df[df.columns].apply(lambda x: x.explode().groupby(level=0).max())
OUTPUT
Col1 Col2 Col3
0 0.0 100 Tall
1 50.0 0 NaN
2 60.0 10 Short
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/393330.html
上一篇:放置apply方法的問題
下一篇:如何將多個資料幀相互合并?
