通过值比较动态选择数据帧字段

2024-06-16 11:15:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以通过键入

df.loc[(df[column_1] == value_1) & (df[column_2] == value_2), columnWithValues].sum()

我正在寻找一个简单的解决方案,它使用列和值指定的集合。 有没有类似的东西?你知道吗

set_columns = set([column_1, column_2])
set_values = set([value_1, value_2])
df.loc[set_col == set_val, columnWithValues].sum()

这样,输入可以有任意数量的参数。你知道吗


Tags: columnsdf数量键入valuecolumncolval
1条回答
网友
1楼 · 发布于 2024-06-16 11:15:22

您可以将要查询的列的名称放入列表中,将目标值放入元组中;将列设置为数据框上的索引,然后使用值进行查询:

columns = ['column_1', 'column_2']
values = ('value_1', 'value_2')

df.set_index(columns).loc[values, columnWithValues].sum()

示例:

df = pd.DataFrame({
        "A": [1,1,1,1,2,2,2,2],
        "B": [1,1,2,2,3,3,4,4],
        "C": [2,1,2,3,4,3,5,6],
        "D": [5,3,2,1,6,7,8,9]
    })

columns = ['A', 'B']
values = (2,4)
df.set_index(columns).loc[values, ['C','D']].sum()

#C    11
#D    17
#dtype: int64

相关问题 更多 >