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

时间:2017-07-05 20:22:10

标签: python pandas dataframe comparison

我可以通过输入

来获得满足指定条件的数据帧中所有值的总和
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()

这样,输入可以有任意数量的参数。

1 个答案:

答案 0 :(得分:1)

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

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