如何计算要求和的值的数目

2024-04-25 19:58:37 发布

您现在位置:Python中文网/ 问答频道 /正文

如何计算要求和的值的数目?你知道吗

我有一个非常大的df,但是假设我有一个像这样的df:

df1:

     A     B        C
0   John  Pen       Apple
1   John  Printer   Pie
2   John  Charger   Burger
3   Erick Battery   Pizza
4   Mandy Keyboard  Bread
5   Mandy Phone     Coffee
6   David Computer  Coke

另一个df:

df2:

     A        B  
0   Pen       2
1   Printer   5
2   Charger   11
3   USB       5
4   Keyboard  8
5   Phone     21
6   Cup       3

第三个df:

df3: 

    A      B
0  Erick  Yes
1  John   Yes
2  David  No 
3  Mandy  Yes
4  Jared  No
5  Lisa   No

我将匹配值相加

In: 

df = pd.merge(df1, df2, left_on='B', right_on='A', suffixes=('','1'))
df = df.groupby('A', as_index=False)['B1'].sum()
df = pd.merge(df3, df, on='A', how='left').rename(columns={'B1':'Sum'}).fillna('')

Out:

    A      B   Sum
0  Erick  Yes  
1  John   Yes  18
2  David  No   
3  Mandy  Yes  29
4  Jared  No
5  Lisa   No

现在我要计算被求和的值的数目。 我想要的是:

Out:

    A      B   Sum   Count
0  Erick  Yes          0
1  John   Yes  18      3
2  David  No           0
3  Mandy  Yes  29      2
4  Jared  No           0
5  Lisa   No           0

我知道这可能非常简单和明显,但我对python还是很陌生

我该怎么做?你知道吗


Tags: nodfonjohnprinteryesdaviddf1
2条回答

试试这个:

In [153]: df = df.groupby('A', as_index=False)['B1'].agg(['sum','count']).reset_index()

In [154]: df = pd.merge(df3, df, on='A', how='left').rename(columns={'B1':'Sum'}).fillna('')

In [155]: df
Out[155]:
       A    B sum count
0  Erick  Yes
1   John  Yes  18     3
2  David   No
3  Mandy  Yes  29     2
4  Jared   No
5   Lisa   No

尝试使用groupby方法count()

df = pd.merge(df1, df2, left_on='B', right_on='A', suffixes=('','1'))

groups = df.groupby('A', as_index=False)
df = groups['B1'].sum()
df['count'] = groups.count()['B1']

df = pd.merge(df3, df, on='A', how='left').rename(columns {'B1':'Sum'}).fillna('')

相关问题 更多 >