名前が少し異なる個々のcsvファイルであるかなり乱雑なデータセットを使用しています。まだすべてのバリエーションを検出していることもあり、csvファイルの列の名前を変更するのは面倒です。そのため、特定の行の一連の列について、どのフィールドがNaNではないかを判断し、それを引き継ぐことを検討しています。新しい列に。それを行う方法はありますか?
適例。次のようなデータフレームがあるとしましょう。
Index A B
1 15 NaN
2 NaN 11
3 NaN 99
4 NaN NaN
5 12 14
これからの望ましい出力は、データフレームが次のようになるように新しい列Cを作成することであるとしましょう。
Index A B C
1 15 NaN 15
2 NaN 11 11
3 NaN 99 99
4 NaN NaN NaN
5 12 14 12 (so giving priority to A over B)
どうすればこれを達成できますか?
任意の数の列を持つデータフレームの場合、行を埋め戻し(.bfill(axis=1)
)、最初の列を取得できます(.iloc[:, 0]
)。
df = pd.DataFrame({
'A': [15, None, None, None, 12],
'B': [None, 11, 99, None, 14],
'C': [10, None, 10, 10, 10]})
df['D'] = df.bfill(axis=1).iloc[:, 0]
>>> df
A B C D
0 15 NaN 10 15
1 NaN 11 NaN 11
2 NaN 99 10 99
3 NaN NaN 10 10
4 12 14 10 12
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加