pandas groupby().mean()的分组值[重复]

u5i3ibmn  于 2022-11-20  发布在  其他
关注(0)|答案(4)|浏览(252)

此问题在此处已有答案

How to check if a value is in the list in selection from pandas data frame?(2个答案)
4天前关闭。
拥有数据框架:
| 栏_A|栏_B|
| - -|- -|
| 一个|二十个|
| 2个|二十五个|
| 一个|五十二|
| 2个|二十二个|
| 四个|六十七|
| 一个|三十四|
| 三个|一百一十二|
| 五个|五十五|
| 四个|三十三人|
| 五个|八十七|
| 一个|一百零八|
希望从Column_A创建2个组,并在Column_B中查找这些组的平均值:
第一组可能是1、2和3,第二组可能是4和5。
我了解了groupby()的基础知识

df.groupby("Column_A")["Column_B"].mean()

并调用列中的某些值

df[df["Column_A"] == 1].groupby()[].mean()

但是,是否有方法包含Column_A中的(1,2 and 3)和(4,5)组成的组?

[["Column_A"] == 1, 2, 3].groupby(Column_B).mean()

还有:

[["Column_A"] == 4, 5].groupby(Column_B).mean()

先谢了

o4hqfura

o4hqfura1#

您可以合并cut以合并第一列,然后合并groupby.mean

(df.groupby(pd.cut(df['Column_A'], [0,3,5], labels=['1-3', '4-5']))
   ['Column_B'].mean()
 )

输出量:

Column_A
1-3    53.285714
4-5    60.500000
Name: Column_B, dtype: float64
mwngjboj

mwngjboj2#

希望从Column_A创建2个组,并在Column_B中查找这些组的平均值
您可以在groupby中为[1,2,3]中的项目与不在列表中的项目(即[4,5])使用条件。

df.groupby(df['Column_A'].isin([1, 2, 3]))['Column_B'].mean()

Output:
Column_A
False    60.500000
True     53.285714
Name: Column_B, dtype: float64

如果我想在相同的isin条件下找到Column_B = 25的.count(),该怎么办

# Is this what you wanted?
df.groupby(df['Column_A'].isin([1, 2, 3]) & (df['Column_B']==25))['Column_B'].count()

Output:
False    10
True      1
Name: Column_B, dtype: int64
af7jpaap

af7jpaap3#

df[df["Column_A"] <= 3].groupby("Column_A")["Column_B"].mean()
df[df["Column_A"] > 3].groupby("Column_A")["Column_B"].mean()

如果Column_A不是数字,则使用isin

vfh0ocws

vfh0ocws4#

如果只需要特定的值组(1,2,3和4,5),请使用isin

df[df["Column_A"].isin([1,2,3])].groupby("Column_A")["Column_B"].mean()
df[df["Column_A"].isin([4,5])].groupby("Column_A")["Column_B"].mean()

isin doc

相关问题