ViS*_*iSa 2 apply python-polars
我正在尝试在极坐标上进行apply简单的value_counts()多列操作dataframe,但出现错误。
import polars as pl
import pandas as pd
Run Code Online (Sandbox Code Playgroud)
数据:
sample_df = pl.DataFrame({'sub-category': ['tv','mobile','tv','wm','micro','wm'],
'category': ['electronics','mobile','electronics','electronics','kitchen','electronics']})
Run Code Online (Sandbox Code Playgroud)
失败的尝试:
#1
sample_df.apply(value_counts())
#2
sample_df.apply(lambda x: x.value_counts())
#3
sample_df.apply(lambda x: x.to_series().value_counts())
#4
sample_df.select(pl.col(['sub-category','category'])).apply(lambda x: x.value_counts())
#5
sample_df.select(pl.col(['sub-category','category'])).apply(lambda x: x.to_series().value_counts())
Run Code Online (Sandbox Code Playgroud)
但如果我将其转换为Pandas数据框,那么它就可以工作:
sample_df.to_pandas().apply(lambda x: x.value_counts())
Run Code Online (Sandbox Code Playgroud)
你可以.melt+.groupby().count()
df.melt(variable_name="column").groupby(pl.all()).count()\nRun Code Online (Sandbox Code Playgroud)\nshape: (7, 3)\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 column \xe2\x94\x86 value \xe2\x94\x86 count \xe2\x94\x82\n\xe2\x94\x82 --- \xe2\x94\x86 --- \xe2\x94\x86 --- \xe2\x94\x82\n\xe2\x94\x82 str \xe2\x94\x86 str \xe2\x94\x86 u32 \xe2\x94\x82\n\xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1\n\xe2\x94\x82 sub-category \xe2\x94\x86 mobile \xe2\x94\x86 1 \xe2\x94\x82\n\xe2\x94\x82 category \xe2\x94\x86 kitchen \xe2\x94\x86 1 \xe2\x94\x82\n\xe2\x94\x82 sub-category \xe2\x94\x86 wm \xe2\x94\x86 2 \xe2\x94\x82\n\xe2\x94\x82 sub-category \xe2\x94\x86 tv \xe2\x94\x86 2 \xe2\x94\x82\n\xe2\x94\x82 sub-category \xe2\x94\x86 micro \xe2\x94\x86 1 \xe2\x94\x82\n\xe2\x94\x82 category \xe2\x94\x86 mobile \xe2\x94\x86 1 \xe2\x94\x82\n\xe2\x94\x82 category \xe2\x94\x86 electronics \xe2\x94\x86 4 \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\nRun Code Online (Sandbox Code Playgroud)\n您可以添加.pivot以进行从长到宽的重塑。
df.melt().groupby(pl.all()).count().pivot(\n values = "count",\n index = "value",\n columns = "column",\n aggregate_function = None\n)\nRun Code Online (Sandbox Code Playgroud)\nshape: (6, 3)\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 value \xe2\x94\x86 sub-category \xe2\x94\x86 category \xe2\x94\x82\n\xe2\x94\x82 --- \xe2\x94\x86 --- \xe2\x94\x86 --- \xe2\x94\x82\n\xe2\x94\x82 str \xe2\x94\x86 u32 \xe2\x94\x86 u32 \xe2\x94\x82\n\xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1\n\xe2\x94\x82 mobile \xe2\x94\x86 1 \xe2\x94\x86 1 \xe2\x94\x82\n\xe2\x94\x82 wm \xe2\x94\x86 2 \xe2\x94\x86 null \xe2\x94\x82\n\xe2\x94\x82 micro \xe2\x94\x86 1 \xe2\x94\x86 null \xe2\x94\x82\n\xe2\x94\x82 kitchen \xe2\x94\x86 null \xe2\x94\x86 1 \xe2\x94\x82\n\xe2\x94\x82 electronics \xe2\x94\x86 null \xe2\x94\x86 4 \xe2\x94\x82\n\xe2\x94\x82 tv \xe2\x94\x86 2 \xe2\x94\x86 null \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\nRun Code Online (Sandbox Code Playgroud)\n