如何对DataFrame列中的每个字典执行提取键操作?
问题原因
你写的df["col1"].keys()是取Pandas Series对象自身的索引,不是Series里存储的每个字典元素的键,所以达不到逐行提取的效果。
解决方法
你可以用apply方法逐行处理列里的每个字典:
- 如果你要得到逗号分隔的字符串格式(和你示例输出完全一致),执行以下代码:
df["col1"] = df["col1"].apply(lambda x: ", ".join(map(str, x.keys())))
- 如果你想保留列表格式存储键,后续需要继续用键做计算,执行以下代码:
df["col1"] = df["col1"].apply(lambda x: list(x.keys()))
异常兼容
如果你的列里存在非字典类型的空值/异常值,可以加类型判断避免报错:
df["col1"] = df["col1"].apply(lambda x: ", ".join(map(str, x.keys())) if isinstance(x, dict) else "")
内容的提问来源于stack exchange,提问作者gh1222
相关产品推荐
相关产品推荐

