我可以通过输入以下内容来获取满足指定条件的数据框中所有值的总和:

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()


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

最佳答案

您可以在列表中输入要查询的列的名称,并在元组中输入目标值。将列设置为数据框上的索引,然后查询值:

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

关于python - 通过值比较动态选择数据框字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44935332/

10-13 09:17
查看更多