在 Pandas 中,如何计算 bin 上的值计数和另外 1 列中的总值
In Pandas, how to compute value counts on bins and sum value in 1 other column
我有 Pandas 数据框,例如:
df =
col1 col2
23 75
25 78
22 120
我想指定 bins:0-100 和 100-200 并在这些 bins 中除以 col2 计算其值计数,并对位于这些 bins 中的值的 col1 求和。
So:
df_output:
col2_range count col1_cum
0-100 2 48
100-200 1 22
获取 col2_range 和计数非常简单:
import numpy as np
a = np.arange(0,200, 100)
bins = a.tolist()
counts = data['col1'].value_counts(bins=bins, sort=False)
不过,我如何求和 col2?
IIUC,尝试使用 pd.cut
创建箱子并按这些箱子分组:
g = pd.cut(df['col2'],
bins=[0, 100, 200, 300, 400],
labels = ['0-99', '100-199', '200-299', '300-399'])
df.groupby(g, observed=True)['col1'].agg(['count','sum']).reset_index()
输出:
col2 count sum
0 0-99 2 48
1 100-199 1 22
我想我看错了原文post:
g = pd.cut(df['col2'],
bins=[0,100,200,300,400],
labels = ['0-99', '100-199', '200-299', '300-399'])
df.groupby(g, observed=True).agg(col1_count=('col1','count'),
col2_sum=('col2','sum'),
col1_sum=('col1','sum')).reset_index()
输出:
col2 col1_count col2_sum col1_sum
0 0-99 2 153 48
1 100-199 1 120 22
我有 Pandas 数据框,例如:
df =
col1 col2
23 75
25 78
22 120
我想指定 bins:0-100 和 100-200 并在这些 bins 中除以 col2 计算其值计数,并对位于这些 bins 中的值的 col1 求和。
So:
df_output:
col2_range count col1_cum
0-100 2 48
100-200 1 22
获取 col2_range 和计数非常简单:
import numpy as np
a = np.arange(0,200, 100)
bins = a.tolist()
counts = data['col1'].value_counts(bins=bins, sort=False)
不过,我如何求和 col2?
IIUC,尝试使用 pd.cut
创建箱子并按这些箱子分组:
g = pd.cut(df['col2'],
bins=[0, 100, 200, 300, 400],
labels = ['0-99', '100-199', '200-299', '300-399'])
df.groupby(g, observed=True)['col1'].agg(['count','sum']).reset_index()
输出:
col2 count sum
0 0-99 2 48
1 100-199 1 22
我想我看错了原文post:
g = pd.cut(df['col2'],
bins=[0,100,200,300,400],
labels = ['0-99', '100-199', '200-299', '300-399'])
df.groupby(g, observed=True).agg(col1_count=('col1','count'),
col2_sum=('col2','sum'),
col1_sum=('col1','sum')).reset_index()
输出:
col2 col1_count col2_sum col1_sum
0 0-99 2 153 48
1 100-199 1 120 22