我有一個 Pandas 資料框,其中第一列的總數在第二列中完成,第二列和第三列相同:
Column1 Column2 Column3
0 3
1 2
2 1 6
3 7 13
我現在想要做的是將所有列 (1,2,3) 合并為一個列 A(忽略總值),如下所示:
Column A
0 3
1 2
2 1
3 7
我怎樣才能最好地解決這個問題?這是下面提到的代碼。
import pandas as pd
data = {'Column1':[3, 2, 1, ""],
'Column2': ["", "", "6", "7"],
'Column3':["", "", "", 13]}
abc = pd.DataFrame(data)
abc
abc.to_dict()
我的輸出:
{'Column1': {0: 3, 1: 2, 2: 1, 3: ''},
'Column2': {0: '', 1: '', 2: '6', 3: '7'},
'Column3': {0: '', 1: '', 2: '', 3: 13}}
uj5u.com熱心網友回復:
替換為缺失值空字串,然后回填缺失值并選擇第一列,最后在必要時轉換為整數并轉換為一列DataFrame:
data = {'Column1':[3, 2, 1, ""],
'Column2': ["", "", "6", "7"],
'Column3':["", "", "", 13]}
df = pd.DataFrame(data)
df1 = df.replace('', np.nan).bfill(axis=1).iloc[:, 0].astype(int).to_frame('Column A')
print (df1)
Column A
0 3
1 2
2 1
3 7
uj5u.com熱心網友回復:
您可以跨列創建串列,洗掉空格并獲取第一個元素:
df['Column A'] = df.apply(lambda x: list(x), axis=1).apply(lambda x: [i for i in x if i!=''][0]).astype(int)
輸出:
0 3
1 2
2 1
3 7
dtype: int64
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/383802.html
