我有一个包含两列State和Code的dataframe,每列都缺少值。
import pandas as pd
df = pd.DataFrame([['Alabama', 'AL'], ['Alaska', 'AK'], ['Arizona', 'AZ'], ['Arkansas', 'AR'], ['Iowa','IA'],['Hawaii','HI'], ['Idaho', 'ID'], ['Alabama', ''], ['', 'IA'], ['Alaska',''], ['', 'AZ']], columns=['State', 'Code'])
缺少值
State Code
7 Alabama
8 IA
9 Alaska
10 AZ
我试过的
state_code_dict = {
'Alabama': 'AL',
'Alaska': 'AK',
'Arizona': 'AZ',
'Arkansas': 'AR',
'Iowa':'IA',
'Hawaii':'HI',
'Idaho': 'ID',
}
def state_code(x):
if (x['Code'] == ''):
return state_code_dict[x['State']]
else:
return x['Code']
df['Code'] = df.apply(lambda x: state_code(x), axis=1)
。。。
所需输出
State Code
7 Alabama AL
8 Iowa IA
9 Alaska AK
10 Arizona AZ
最佳答案
IIUC,您可以使用map
首先映射代码,然后声明,当您有空值时,使用布尔掩蔽只分配值
mask = df.Code == ''
df.loc[mask, 'Code'] = df[mask].State.map(state_code_dict)
mask = df.State == ''
df.loc[mask, 'State'] = df[mask].Code.map({v:k for k,v in state_code_dict.items()})
State Code
0 Alabama AL
1 Alaska AK
2 Arizona AZ
3 Arkansas AR
4 Iowa IA
5 Hawaii HI
6 Idaho ID
7 Alabama AL
8 Iowa IA
9 Alaska AK
10 Arizona AZ
关于python - 在 Pandas 数据框中的相关列中同时填充缺失值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51769472/