有沒有辦法連續組合熊貓資料框中的列值以減少丟失資料的數量?最好按“分層”順序(例如:“保留 A 列的所有值,如果缺少某些內容,則使用 B 列中的值,如果仍然缺少某些內容,請使用 C 列中的值等等)
這似乎是一項非常簡單的任務,但我一直無法做到。我研究了 pandas-functions 的作業原理:join、merge、combine 和 combine_first,我假設這些函式之一的特定設定或這些函式的組合可以解決問題,但我不知道如何執行這個,所以任何建議或幫助將不勝感激。
所需轉換的示例代碼:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1,2,3,4,np.nan, np.nan, np.nan, np.nan],
'B': [np.nan,np.nan,0.3,4,5, 0.6, 0.7, np.nan],
'C': [0.01, 0.2, 0.3, 0.04, 0.5, 0.06, 7, 8]})
print('Input')
print(df)
xx = pd.DataFrame({'A': [1,2,3,4,5,0.6,0.7,8],
'B': [np.nan,np.nan,0.3,4,5, 0.6, 0.7, np.nan],
'C': [0.01, 0.2, 0.3, 0.04, 0.5, 0.06, 7, 8]})
print('\nDesired output:')
print(xx)
uj5u.com熱心網友回復:
您可以fillna重復使用:
df['A'] = df['A'].fillna(df['B']).fillna(df['C'])
uj5u.com熱心網友回復:
我們可以bfill用來回填沿列軸的值
df['A'] = df.bfill(axis=1).iloc[:, 0]
A B C
0 1.0 NaN 0.01
1 2.0 NaN 0.20
2 3.0 0.3 0.30
3 4.0 4.0 0.04
4 5.0 5.0 0.50
5 0.6 0.6 0.06
6 0.7 0.7 7.00
7 8.0 NaN 8.00
uj5u.com熱心網友回復:
不確定我的回答和@Shubham Sharma 之間是否有任何區別,但這是另一種方法
df["A"] = df.fillna(method='bfill', axis=1)["A"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/427008.html
