簡體   English   中英

如何對列中的每個字典執行操作?

[英]How to perform operation over each dictionary in column?

如果我在數據框中有一列帶有字典:

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

如何為每一行執行從每個字典中提取鍵的操作? 所以我需要得到:

col1
10, 7
5, 1, 7
1

怎么做? 這個 df["col1"] = df["col1"].keys() 不起作用,我不知道為什么

DataFrame.keys()來獲取自己的索引,而不是從單元格中的字典中獲取鍵。

但是您可以使用.apply()分別在列中的每個.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

df["col1"]不是字典 - 它是一個元組。 這解釋了為什么您會收到AttributeError 您需要遍歷數據幀列中的每一行並對其調用keys()

df['col1'] = [row.keys() for row in df["col1"]]

DataFrame.apply根據文檔

沿 DataFrame 的軸應用函數。

幸運的是,默認軸是列,而不是行。 您要查找單列,因此請讓您的應用函數檢查當前列。

df.apply(lambda c: c.keys() if c.name == "col1" else c)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM