如何在 python 中编写交叉表查询?
hwo to write crosstab query in python?
我在 python 中有一个函数在数据帧上使用交叉表
def event_mouhafaza(self,df):
df_event_mohafazat_crosstab = pd.crosstab(df['event_mohafaza'],df['event_type'])
print(df_event_mohafazat_crosstab)
以上函数正常工作,return 预期结果。
当我尝试用变量替换交叉表查询的值时系统崩溃。
def event_mouhafaza(self,df,items):
for item in items:
item1 = items[0]
item2 = items[1]
df = df.set_index(item2)
df_event_mohafazat_crosstab = pd.crosstab(df,item1,item2)
print(df_event_mohafazat_crosstab)
并显示此错误:
df_event_mohafazat_crosstab = pd.crosstab(df,item1,item2)
File "F:\AIenv\lib\site-packages\pandas\core\reshape\pivot.py", line 577, in crosstab
raise ValueError("values cannot be used without an aggfunc.")
ValueError: values cannot be used without an aggfunc.
第二个函数哪里出错了,如何解决?
您在第二个示例中错误地使用了交叉表函数。 pd.crosstab 不将数据帧作为其第一个参数。现在你正在调用这样的函数(使用 kwargs 来突出显示问题)。当您指定 values 参数时(就像您使用位置参数一样),pandas 也希望将某些内容也传递到 aggfunc
参数中。有关详细信息,请参阅文档。
# This will error out.
pd.crosstab(index=df, columns=item1, values=item2)
如果 item1
和 item2
是数据框中列的名称,您需要这样做:
pd.crosstab(index=df[item1], columns=df[item2])
接下来,如果您打算在交叉制表中使用它,您实际上并不希望将它设置为索引。而你的 for-loop 实际上没有做任何事情,你可以在没有它的情况下分配 item1 和 item2:
def event_mouhafaza(self,df,items):
item1 = items[0]
item2 = items[1]
df_event_mohafazat_crosstab = pd.crosstab(index=df[item1], columns=df[item2])
print(df_event_mohafazat_crosstab)
我在 python 中有一个函数在数据帧上使用交叉表
def event_mouhafaza(self,df):
df_event_mohafazat_crosstab = pd.crosstab(df['event_mohafaza'],df['event_type'])
print(df_event_mohafazat_crosstab)
以上函数正常工作,return 预期结果。
当我尝试用变量替换交叉表查询的值时系统崩溃。
def event_mouhafaza(self,df,items):
for item in items:
item1 = items[0]
item2 = items[1]
df = df.set_index(item2)
df_event_mohafazat_crosstab = pd.crosstab(df,item1,item2)
print(df_event_mohafazat_crosstab)
并显示此错误:
df_event_mohafazat_crosstab = pd.crosstab(df,item1,item2)
File "F:\AIenv\lib\site-packages\pandas\core\reshape\pivot.py", line 577, in crosstab
raise ValueError("values cannot be used without an aggfunc.")
ValueError: values cannot be used without an aggfunc.
第二个函数哪里出错了,如何解决?
您在第二个示例中错误地使用了交叉表函数。 pd.crosstab 不将数据帧作为其第一个参数。现在你正在调用这样的函数(使用 kwargs 来突出显示问题)。当您指定 values 参数时(就像您使用位置参数一样),pandas 也希望将某些内容也传递到 aggfunc
参数中。有关详细信息,请参阅文档。
# This will error out.
pd.crosstab(index=df, columns=item1, values=item2)
如果 item1
和 item2
是数据框中列的名称,您需要这样做:
pd.crosstab(index=df[item1], columns=df[item2])
接下来,如果您打算在交叉制表中使用它,您实际上并不希望将它设置为索引。而你的 for-loop 实际上没有做任何事情,你可以在没有它的情况下分配 item1 和 item2:
def event_mouhafaza(self,df,items):
item1 = items[0]
item2 = items[1]
df_event_mohafazat_crosstab = pd.crosstab(index=df[item1], columns=df[item2])
print(df_event_mohafazat_crosstab)