python - 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
解决方案
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