如何根据其他列选择计算一列中的数据?

时间:2017-11-22 00:02:50

标签: python pandas numpy

我有两个数据框如下:

df1 = DataFrame({'a': np.random.randint(10, size=2)})
df2 = DataFrame({'a': np.random.randint(10, size=100)})

df1中有两个数字,我想计算两个数字'金额为df2。答案在df1的右边[' a']。

我用于in,但是有一个错误:值的长度与'的长度不匹配'指数。

任何人都可以告诉我如何解决这个问题?

我使用df2 [' a']。isin(df1 [' a'])。sum(),但它给出了两个数字一起的结果。

我想要的结果如下:

No  Amount
8   3
1   2

而不是:

No  Amount
8   5
1   5

2 个答案:

答案 0 :(得分:2)

df2.a.value_counts().reindex(df1.a)
Out[369]: 
a
4    11
5     5
Name: a, dtype: int64

添加sum

df2.a.value_counts().reindex(df1.a).sum()
Out[370]: 16

答案 1 :(得分:1)

如果我理解正确:

In [22]: df2['a'].isin(df1['a']).sum()
Out[22]: 18