Python 熊猫使用单元格值作为dict键返回dict值

Python 熊猫使用单元格值作为dict键返回dict值,python,pandas,dataframe,Python,Pandas,Dataframe,我的问题涉及到使用dataframe列中的值作为键,以便返回它们各自的值并运行条件语句 我有一个数据帧df,它包含一个列“count”,该列的整数范围为1到8,还有一个列“category”,该列的值为“a”、“B”或“C” 我有一本字典,dct,包含a:2,B:4,C:6对 这是我的(不正确)代码: 因此,我想返回一个数据帧,其中给定行的“count”值大于使用同一行中的“category”字母从字典中检索到的值 因此,如果有(1,2,6,6)的计数值和(A,B,C,A)的类别值,则第三行和第

我的问题涉及到使用dataframe列中的值作为键,以便返回它们各自的值并运行条件语句

我有一个数据帧df,它包含一个列“count”,该列的整数范围为1到8,还有一个列“category”,该列的值为“a”、“B”或“C”

我有一本字典,dct,包含a:2,B:4,C:6对

这是我的(不正确)代码:

因此,我想返回一个数据帧,其中给定行的“count”值大于使用同一行中的“category”字母从字典中检索到的值

因此,如果有(1,2,6,6)的计数值和(A,B,C,A)的类别值,则第三行和第四行将在结果数据帧中返回


如何修改上述代码以实现此目的?

一个好方法是将词典添加到现有数据帧中,然后在新数据帧上应用查询:

import pandas as pd
df = pd.DataFrame(data={'count': [4, 5, 6], 'category': ['A', 'B', 'C']})
dct = {'A':5, 'B':4, 'C':-1}
df['min_count'] = df['category'].map(dct)
df = df.query('count>min_count')
按照你的逻辑:

import pandas as pd

dct = {'A':2, 'B':4, 'C':6}
df = pd.DataFrame({'count':[1,2,5,6],
                   'category':['A','B','C','A']})

print('original dataframe')
print(df)

def process_row(x):
    return True if x['count'] >= dct[x['category']] else False

f = df.apply(lambda row: process_row(row), axis=1)
df = df[f]

print('final output')
print(df)
输出:

original dataframe
   count category
0      1        A
1      2        B
2      5        C
3      6        A

final output
   count category
3      6        A

对代码的一个小修改:

result = df[df['count'] >= df['category'].apply(lambda x: dct[x])]
不能直接使用
dct.get(df['category'])
,因为
df['category']
返回一个不能用作字典键的可变序列(字典键需要是不可变的对象)
因此,
lambda
应用到救援中!:)

所以没有办法对我的代码做一个小的调整来实现这一点?如果没有,我可能会选择您提供的方法-谢谢。我认为您应该使用我的解决方案,根据您的逻辑和数据批准它,只有第四行是结果…您是正确的。我已经修正了。
result = df[df['count'] >= df['category'].apply(lambda x: dct[x])]