python 使用条件从数据框列中选择字典值

tcomlyy6  于 2023-02-11  发布在  Python
关注(0)|答案(1)|浏览(115)

我有一个包含4列的 Dataframe :VAL1,VAL2,COST。COST列包含存储为字典的值。

NAME    VAL1    VAL2     COST
----------------------------------------------------------------------------
BACD    259.35  267.00  {'COST[2]': [256.12], 'COST[5]': [257.72], 'COST[16]': [266.3]}
BACD    256.00  257.95  {'COST[2]': [255.27], 'COST[5]': [257.91], 'COST[16]': [266.3]}
BACD    257.90  262.00  {'COST[2]': [258.15], 'COST[5]': [258.82], 'COST[16]': [266.3]}
BACD    260.10  261.40  {'COST[2]': [260.32], 'COST[5]': [257.75], 'COST[16]': [266.3]}.
BACD    260.45  264.90  {'COST[2]': [261.58], 'COST[5]': [258.83], 'COST[16]': [266.3]}

需要如下输出,其中df.COST=='COST[5]

NAME    VAL2     COST
-----------------------
BACD    267.00  257.72
BACD    257.95  257.91
BACD    262.00  258.82
BACD    261.40  257.75
BACD    264.90  258.83

尝试使用以下查询,但不起作用

print(df[(df.NAME=='BACD') & (df.COST=='COST[5]')][['NAME', 'VAL2', 'COST']])

什么是有效的查询?

c90pui9n

c90pui9n1#

我不得不重新分配COST列以获得COST[5]的值:

df['COST'] = df.COST.apply(lambda x: x.get('COST[5]'))

然后您可以拨打:

print(df[(df.NAME=='BACD')][['NAME', 'VAL2', 'COST']])

相关问题