首页 > 解决方案 > How to perform operation over each dictionary in column?

问题描述

If I have a column in dataframe with dictionaries:

col1
{10:24, 7:3}
{5:24, 1:2, 7:8}
{1:1}

How to perform operation of extracting keys from each dictionary for each rows? So I need to get:

col1
10, 7
5, 1, 7
1

How to do that? df["col1"] = df["col1"].keys() doesnt work and I don't know why

标签: pythonpython-3.xdataframedictionary

解决方案


DataFrame必须.keys()获取自己的索引,而不是从单元格中的字典中获取键。

但是您可以使用.apply()在列中的每个元素上分别运行函数。

df['col1'] = df['col1'].apply(lambda item: item.keys())

最小的工作示例:

import pandas as pd

df = pd.DataFrame({'col1':[
   {10:24, 7:3},
   {5:24, 1:2, 7:8},
   {1:1},
]})


df['col1'] = df['col1'].apply(lambda item: item.keys())

print(df)

结果(现在它有带数字的元组):

        col1
0    (10, 7)
1  (5, 1, 7)
2        (1)

顺便提一句:

DataFrame具有处理字符串的特殊方法,这些字符串.str也可以与list/一起使用tuples,其中一些甚至与dictionary

它不能得到df['col1'].str.keys(),因为string没有,keys但如果你使用df['col1'].str[10],那么你会从所有有键的字典元素中得到10

0    24.0
1     NaN
2     NaN

推荐阅读