在循环中与 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'}
我需要创建多个数据透视表,其中只有更改的部分是传递给它的数据。例如
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'}