如何计算要求的值的数量

时间:2016-07-06 21:38:10

标签: python pandas count sum

如何计算要求的值的数量?

我有一个非常大的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

现在我正在尝试计算要求的值的数量。 我想要的df是:

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仍然很陌生

我该怎么做?

2 个答案:

答案 0 :(得分:1)

试试这个:

s = "I have 10 cars"
print [item for sublist in [[x] if x.isdigit() else list(x) for x in s.split(" ")] for item in sublist]
#Output
['I', 'h', 'a', 'v', 'e', '10', 'c', 'a', 'r', 's']

答案 1 :(得分:1)

尝试使用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('')