如何计算要求的值的数量?
我有一个非常大的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仍然很陌生
我该怎么做?
答案 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('')