在循环中与 pandas 一起使用的条件字典

Dictionary of conditions to use with pandas in a loop

我需要创建多个数据透视表,其中只有更改的部分是传递给它的数据。例如

Q1 = pd.pivot_table(df1, values='id', index='race', columns='gender', aggfunc='count')
Q2 = pd.pivot_table(df1[df1['state']=='NJ'], values='id', index='race', columns='gender', aggfunc='count')
Q3 = pd.pivot_table(df1[df1['zipcode']=='07030'], values='id', index='race', columns='gender', aggfunc='count')

我不想多次编写每个 pivot 语句,而是想创建一个 questions:conditions 的字典,并在 pivottable 的参数中提供每个问题的条件,使用看起来像这样的 for 循环:

filter = {"Q1": "", "Q2":"df1['state']=='NJ'", "Q3":"df1['zipcode']=='07030'" }

for qn, mask in filter.items():
    Qx = pd.pivot_table(df1[mask], values='id', index='race', columns='gender', aggfunc='count')
    Qx.to_excel('some.xlsx') 

显然这会引发错误,因为掩码是作为字符串读入的。你如何让它读作不是字符串?谢谢!

您可以单独使用条件(并且 df1.columns 到 select Q1 的整个 DataFrame)

filter = {"Q1": df1.columns, "Q2":df1['state']=='NJ', "Q3":df1['zipcode']=='07030'}