python - 如何为数据帧的每一行应用一个函数,该函数检查嵌入字典的键

标签 python pandas dictionary

我的目标是确定数据帧单元格中嵌入的字典中是否存在某个键,并将结果写入附加列中。

这是我的代码的简化版本:

d = {'symbol':['AMD', 'MSFT', 'BKI', 'UNH'], 'prices': [{'2010-01-04': 9.79}, {'2010-01-04': 30.62}, {'2014-05-06': 0.14}, {'2010-01-04': 31.38}]}
df = pd.DataFrame(d).set_index('symbol')
| symbol |         prices        |
|:------:|:---------------------:|
| AMD    | {'2010-01-04': 9.79}  |
| MSFT   | {'2010-01-04': 30.62} |
| BKI    | {'2014-05-06': 0.14}  |
| UNH    | {'2010-01-04': 31.38} |

然后,我想检查字典中是否存在“2010-01-04”键,并尝试在新列中获取条件:

if '2010-01-04' in df['prices'].apply(lambda x: x.keys()):
    df['Condition'] = df['prices'].apply(lambda x: True)
else:
    df['Condition'] = df['prices'].apply(lambda x: False)

但是,我明白了:

| symbol |         prices        | condition obtained | expected condition |
|:------:|:---------------------:|--------------------|--------------------|
| AMD    | {'2010-01-04': 9.79}  | False              | True               |
| MSFT   | {'2010-01-04': 30.62} | False              | True               |
| BKI    | {'2014-05-06': 0.14}  | False              | False              |
| UNH    | {'2010-01-04': 31.38} | False              | True               |

最佳答案

您需要对列中的每个单元格进行调节,即条件应在应用内发生。

df['check'] = df.prices.apply(lambda x: '2010-01-04' in x)

你正在做的事情是以下

print(df['prices'].apply(lambda x: x.keys()))

结果

symbol
AMD     (2010-01-04)
MSFT    (2010-01-04)
BKI     (2014-05-06)
UNH     (2010-01-04)
Name: prices, dtype: object

然后

print('2010-01-04' in df['prices'].apply(lambda x: x.keys()))

结果

False

因此 if block 没有被执行。它转到 else block ,并将 False 分配给 df['Condition'] 列的所有值(通过广播的方式)

关于python - 如何为数据帧的每一行应用一个函数,该函数检查嵌入字典的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56421683/

相关文章:

python - 将字典与变量进行比较

python - jira-python : updating issue version field gives 'TypeError: <object> is not JSON serializable error

python - 使用 Pandas 按组获取计数

python - 有没有办法加快以下 pandas for 循环?

list - Scala Map[String, MutableList]()

python - 字典中的十进制列表到 float 列表

python - 列出目录中的所有文件?

python - 跳出嵌套 while True 循环

python - 使用 itertuples 遍历 pandas dataframe

python - 按元素将单行 append 到 Pandas 数据框中