【发布时间】:2018-05-03 23:45:27
【问题描述】:
我有一个如下所示的数据框(df):
a b c
1 35-23 RB {'1': '1', '13': '15', '14': '30', '20': '3'}
2 24-10 RB {'1': '1', '13': '17', '14': '86'}
3 26-30 RB {'1': '1', '13': '14', '14': '54'}
4 14-7 RB []
5 24-27 RB {'1': '1', '13': '20', '14': '94', '15': '1'}
6 38-52 RB {'1': '1', '70': '3', '72': '1', '84': '1'}
7 False RB {'1': '1', '70': '4', '71': '1', '72': '0.5'}
8 15-20 RB []
9 30-17 RB []
我还有另一个字典,它为 c 列中的字典键提供了人类可读的名称(大约 100 个键、值对)。它看起来像这样:
dict_names = {1: 'Test', 13: 'Ind Score', 14: 'Successful', 15: 'Cofactor', 20: 'Attempts', etc ...}
我想做的是将我的 dict_names 值映射到我的 df 列 c 中的 dicts 列表中的键,所以我有人类可读的名称。然后,我会将 dicts 列表(列 c)的键(人类可读的名称)转换为我的 df 中的列名。
我知道我可以通过执行以下操作将 c 列中的字典转换为不同的列:
df['c'] = df['c'].apply(lambda x : dict(eval(x)))
df_stats = df['c'].apply(pd.Series)
然后我可以将 df_stats 与 df 连接并删除旧列 c。瞧!
但我坚持将 dict_names 值与我的 df 列 c 中的 dicts 列表的键映射。
我正在寻找的最终 df 输出将是这样的:
a b Test Ind Score Successful Cofactor Attempts ....
1 35-23 RB 1 15 30 NaN 3
2 24-10 RB 1 17 86 NaN NaN
3 26-30 RB 1 17 86 NaN NaN
4 14-7 RB NaN NaN NaN NaN NaN
5 24-27 RB 1 20 94 1 NaN
6 38-52 RB 1 NaN NaN NaN NaN
7 False RB 1 NaN NaN NaN NaN
8 15-20 RB NaN NaN NaN NaN NaN
9 30-17 RB NaN NaN NaN NaN NaN
如果能帮助我找到最终输出的方法,我们将不胜感激。
【问题讨论】:
标签: python-3.x pandas dictionary mapping