我正在尋找如何向 df 添加一列,該列包含非 NaN 或 Null 的第一列的列名。示例:基于列“A”、“B”、“C”、“D”的列“第一”
Name A B C D First
Alex 100 Nan Null NaN A
Michael 300 400 Null Null A
Steve Null 100 100 100 B
John Null Null Nan Null Null
uj5u.com熱心網友回復:
將Null, Nan值轉換為錯誤值,并在必要時Name進行索引,然后測驗DataFrame.notna并獲取第一個匹配的列 by ,如果每行所有s,則DataFrame.idxmax最后設定:NaNNaN
df = df.replace(['Null', 'Nan'], np.nan)
df = df.set_index('Name')
m = df.notna()
df['First'] = m.idxmax(axis=1).where(m.any(axis=1))
print (df)
A B C D First
Name
Alex 100 Nan NaN NaN A
Michael 300 400 NaN NaN A
Steve NaN 100 100 100 B
John NaN NaN NaN NaN NaN
如果需要原始值而不替換:
df = df.set_index('Name')
m = df.isin(['Null', 'Nan']) | df.isna()
df['First'] = (~m).idxmax(axis=1).mask(m.all(axis=1), 'Null')
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/525421.html
標籤:Python熊猫
下一篇:從資料幀中的字串之間提取字串
