使用来自数据框架列的键对值创建新列



我有一个包含许多列的数据框架。其中一列名为"attributes",其中包含一个包含键和值的字典列表。我想提取每个键和它的值到它自己的列。这就是数据帧的样子

下面将添加字典键作为附加列,在数据框中保留attributes列:

df = pd.concat([df, df["attributes"].apply(pd.Series)], axis=1)
<标题>

编辑对于嵌套字典,尝试这个简单的例子对我有用(这里字典的初始列是colC,嵌套字典在foo):

import pandas as pd
df = pd.DataFrame(
{
'colA': {0: 7, 1: 2, 2: 5, 3: 3, 4: 5},
'colB': {0: 7, 1: 8, 2: 10, 3: 2, 4: 5},
'colC': {
0: {'foo': {"A": 5, "B": 6, "C": 9}, 'bar': 182, 'baz': 148},
1: {'bar': 103, 'baz': 155},
2: {'foo': 165, 'bar': 184, 'baz': 170},
3: {'foo': 121, 'bar': 151, 'baz': 187},
4: {'foo': 137, 'bar': 199, 'baz': 108},
},
}
)
df = pd.concat([df, df["colC"].apply(pd.Series)], axis=1)
#   colA  colB                                                       colC                       foo    bar    baz
#0     7     7  {'foo': {'A': 5, 'B': 6, 'C': 9}, 'bar': 182, 'baz': 148}  {'A': 5, 'B': 6, 'C': 9}  182.0  148.0
#1     2     8                                   {'bar': 103, 'baz': 155}                       NaN  103.0  155.0
#2     5    10                       {'foo': 165, 'bar': 184, 'baz': 170}                       165  184.0  170.0
#3     3     2                       {'foo': 121, 'bar': 151, 'baz': 187}                       121  151.0  187.0
#4     5     5                       {'foo': 137, 'bar': 199, 'baz': 108}                       137  199.0  108.0
df = pd.concat([df, df["foo"].apply(pd.Series)], axis=1)
#   colA  colB                                                       colC                       foo    bar    baz      0    A    B    C
#0     7     7  {'foo': {'A': 5, 'B': 6, 'C': 9}, 'bar': 182, 'baz': 148}  {'A': 5, 'B': 6, 'C': 9}  182.0  148.0    NaN  5.0  6.0  9.0
#1     2     8                                   {'bar': 103, 'baz': 155}                       NaN  103.0  155.0    NaN  NaN  NaN  NaN
#2     5    10                       {'foo': 165, 'bar': 184, 'baz': 170}                       165  184.0  170.0  165.0  NaN  NaN  NaN
#3     3     2                       {'foo': 121, 'bar': 151, 'baz': 187}                       121  151.0  187.0  121.0  NaN  NaN  NaN
#4     5     5                       {'foo': 137, 'bar': 199, 'baz': 108}                       137  199.0  108.0  137.0  NaN  NaN  NaN

0列,因为"空"而出现。

相关内容

  • 没有找到相关文章

最新更新