数据框中的相关列中同时填充缺失值

数据框中的相关列中同时填充缺失值

我有一个包含两列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/

10-10 15:14