我有一個資料集,如果另一列包含 Python 中的缺失值,我想在其中填寫一系列以鏡像列
資料
index1 id stat id_A id_B
1 aa y aa_Q1.22_1 aa_Q1.22_1
1 aa y aa_Q2.22_2 aa_Q2.22_2
1 bb n bb_Q3.22_3 bb_Q3.22_3
12 bb n bb_Q4.22_4 bb_Q4.22_4
2 cc_Q3.22_4
2 cc_Q4.22_5
2 dd_Q3.22_5
2 ee_Q4.22_6
2 ee_Q3.22_6
2 ee_Q4.22_7
期望的
index1 id stat id_A id_B
1 aa y aa_Q1.22_1 aa_Q1.22_1
1 aa y aa_Q2.22_2 aa_Q2.22_2
1 bb n bb_Q3.22_3 bb_Q3.22_3
12 bb n bb_Q4.22_4 bb_Q4.22_4
2 cc_Q3.22_4 cc_Q3.22_4
2 cc_Q4.22_5 cc_Q4.22_5
2 dd_Q3.22_5 dd_Q3.22_5
2 ee_Q4.22_6 ee_Q4.22_6
2 ee_Q3.22_6 ee_Q3.22_6
2 ee_Q4.22_7 ee_Q4.22_7
如果“id_B”為空,我想用“id_A”中的確切值填寫“id_B”列。
正在做
我想我應該給你 .apply 方法-
df['id_A'] = df.apply(
lambda row: row[''].row[''] if np.isnan,
axis=1
)
任何建議表示贊賞。還在研究。
uj5u.com熱心網友回復:
另一種選擇是使用np.where. 只需根據df['id_B']== ''True 或 False 從“id_A”或“id_B”中進行選擇:
df['id_B'] = np.where(df['id_B']== '', df['id_A'], df['id_B'])
輸出:
index1 id stat id_A id_B
0 1 aa y aa_Q1.22_1 aa_Q1.22_1
1 1 aa y aa_Q2.22_2 aa_Q2.22_2
2 1 bb n bb_Q3.22_3 bb_Q3.22_3
3 12 bb n bb_Q4.22_4 bb_Q4.22_4
4 2 cc_Q3.22_4 cc_Q3.22_4
5 2 cc_Q4.22_5 cc_Q4.22_5
6 2 dd_Q3.22_5 dd_Q3.22_5
7 2 ee_Q4.22_6 ee_Q4.22_6
8 2 ee_Q3.22_6 ee_Q3.22_6
9 2 ee_Q4.22_7 ee_Q4.22_7
uj5u.com熱心網友回復:
將空字串替換為缺失值,然后使用Series.fillna:
df['id_B'] = df['id_B'].replace('',np.nan).fillna(df['id_A'])
或使用DataFrame.loc:
df.loc[df['id_B'].eq(''), 'id_B'] = df['id_A']
如果空字串在實際資料中缺少值或None類似Nonetype:
df['id_B'] = df['id_B'].fillna(df['id_A'])
或者:
df.loc[df['id_B'].isna(), 'id_B'] = df['id_A']
uj5u.com熱心網友回復:
另一種方法是使用maskand combine_first:
df['id_B'] = df['id_B'].mask(df['id_B'] == '').combine_first(df['id_A'])
print(df)
# Output
index1 id stat id_A id_B
0 1 aa y aa_Q1.22_1 aa_Q1.22_1
1 1 aa y aa_Q2.22_2 aa_Q2.22_2
2 1 bb n bb_Q3.22_3 bb_Q3.22_3
3 12 bb n bb_Q4.22_4 bb_Q4.22_4
4 2 cc_Q3.22_4 cc_Q3.22_4
5 2 cc_Q4.22_5 cc_Q4.22_5
6 2 dd_Q3.22_5 dd_Q3.22_5
7 2 ee_Q4.22_6 ee_Q4.22_6
8 2 ee_Q3.22_6 ee_Q3.22_6
9 2 ee_Q4.22_7 ee_Q4.22_7
設定:
data = {'index1': [1, 1, 1, 12, 2, 2, 2, 2, 2, 2],
'id': ['aa', 'aa', 'bb', 'bb', '', '', '', '', '', ''],
'stat': ['y', 'y', 'n', 'n', '', '', '', '', '', ''],
'id_A': ['aa_Q1.22_1', 'aa_Q2.22_2', 'bb_Q3.22_3', 'bb_Q4.22_4',
'cc_Q3.22_4', 'cc_Q4.22_5', 'dd_Q3.22_5', 'ee_Q4.22_6',
'ee_Q3.22_6', 'ee_Q4.22_7'],
'id_B': ['aa_Q1.22_1', 'aa_Q2.22_2', 'bb_Q3.22_3', 'bb_Q4.22_4',
'', '', '', '', '', '']}
df = pd.DataFrame(df)
print(df)
# Output
index1 id stat id_A id_B
0 1 aa y aa_Q1.22_1 aa_Q1.22_1
1 1 aa y aa_Q2.22_2 aa_Q2.22_2
2 1 bb n bb_Q3.22_3 bb_Q3.22_3
3 12 bb n bb_Q4.22_4 bb_Q4.22_4
4 2 cc_Q3.22_4
5 2 cc_Q4.22_5
6 2 dd_Q3.22_5
7 2 ee_Q4.22_6
8 2 ee_Q3.22_6
9 2 ee_Q4.22_7
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/420104.html
標籤:
