如果我在資料框中有一列帶有字典:
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()不起作用,我不知道為什么
uj5u.com熱心網友回復:
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]則您可以從所有具有鍵的 dictionares 元素中獲取10
0 24.0
1 NaN
2 NaN
uj5u.com熱心網友回復:
df["col1"]不是字典 - 它是一個元組。這就解釋了為什么你會得到一個AttributeError. 您需要遍歷資料框列中的每一行并呼叫keys()它。
df['col1'] = [row.keys() for row in df["col1"]]
uj5u.com熱心網友回復:
DataFrame.apply根據檔案:
沿 DataFrame 的軸應用函式。
幸運的是,默認軸是列,而不是行。您要查找單列,因此請讓您的應用函式檢查當前列。
df.apply(lambda c: c.keys() if c.name == "col1" else c)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358177.html
