作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下包含各种类的嵌套字典,其中包含一组键值对...
['Class1': ['Param1': '0', 'Param2': '1', 'Param3': '2'], 'Class2': ['Param1': '4', 'Param2': '5', 'Param3': '6']]
我想将嵌套字典映射到 pandas 数据框中的新列,如下所示......
Class,Param
Class1,Param1
Class2,Param1
Class1,Param2
Class2,Param2
Class1,Param3
Class2,Param3
我不确定是否可以使用 pandas 中的 map 函数来完成此操作,我可以使用简单的字典执行以下操作
df['new_column'] = df['Param'].map(dict)
但我不确定如何将列映射到嵌套字典...
最佳答案
我认为您需要通过 DataFrame
构造函数使用 unstack
创建 Series
, rename_axis
,创建 Series
的名称,然后创建 join
:
d = {'Class1': {'Param1': '0', 'Param2': '1', 'Param3': '2'},
'Class2': {'Param1': '4', 'Param2': '5', 'Param3': '6'}}
s = pd.DataFrame(d).unstack().rename_axis(('Class','Param')).rename('new_column')
print (s)
Class Param
Class1 Param1 0
Param2 1
Param3 2
Class2 Param1 4
Param2 5
Param3 6
Name: new_column, dtype: object
df = df.join(s, on=['Class','Param'])
print (df)
Class Param new_column
0 Class1 Param1 0
1 Class2 Param1 4
2 Class1 Param2 1
3 Class2 Param2 5
4 Class1 Param3 2
5 Class2 Param3 6
<小时/>
d = {'Class1': {'Param1': '0'},
'Class2': {'Param1': '4', 'Param2': '5', 'Param3': '6'}}
s = pd.DataFrame(d).unstack().rename_axis(('Class','Param')).rename('new_column')
print (s)
Class Param
Class1 Param1 0
Param2 NaN
Param3 NaN
Class2 Param1 4
Param2 5
Param3 6
Name: new_column, dtype: object
df = df.join(s, on=['Class','Param'])
print (df)
Class Param new_column
0 Class1 Param1 0
1 Class2 Param1 4
2 Class1 Param2 NaN
3 Class2 Param2 5
4 Class1 Param3 NaN
5 Class2 Param3 6
关于python - 如何将 Pandas 数据框列映射到嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45161220/
我是一名优秀的程序员,十分优秀!