假設我有一個這樣的資料框:
a b c d
0 S t f nan
1 S t t nan
2 S f nan nan
3 Q t nan nan
我想將最后 3 列組合成一個列,作為一個陣列,但不包括 nan 值,所以我最終得到如下內容:
a b c d e
0 S t f nan [t, f]
1 S t t nan [t, f]
2 S f nan nan [f]
3 Q t nan nan [t]
我能得到的最接近的是使用iloc,但我無法正確應用條件:
df['e'] = df.iloc[:, 1:].values.tolist()
以上結果導致陣列具有所有列值,包括 nans。
uj5u.com熱心網友回復:
您可以使用嵌套串列推導式,使用 NaN 不等于自身的事實來過濾掉 NaN:
df['e'] = [[x for x in ary if x==x] for ary in df.iloc[:,-3:].to_records(index=False)]
輸出:
a b c d e
0 S t f NaN [t, f]
1 S t t NaN [t, t]
2 S f NaN NaN [f]
3 Q t NaN NaN [t]
uj5u.com熱心網友回復:
恕我直言,更具可讀性的版本:
df['new_col_name'] = df.iloc[:,-3:].apply(lambda ser: ser.dropna().to_list(), axis=1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/472055.html
上一篇:如何比較2個資料幀,然后輸出一個ID以告知行是否已更改?
下一篇:聚合串列中為真的列名
