我试图返回一个包含来自熊猫df
中特定值的加法运算的序列。具体来说,下面的df
。我想将所有X's
与所有Y's
添加在一起。这些不是按任何特定顺序排列的。
import pandas as pd
d = ({
'Item' : ['X','Y','Z','X','Z','Y','Z'],
'Value' : [10,11,20,21,10,30,31],
})
df = pd.DataFrame(data=d)
Xs = df.loc[df['Item'] == 'X', 'Value']
Ys = df.loc[df['Item'] == 'Y', 'Value']
Out = Xs + Ys
预期输出:
21
51
答案 0 :(得分:1)
这里的问题是不同的索引,因此Series.reset_index
与drop=True
需要相同的索引:
Out = Xs.reset_index(drop=True) + Ys.reset_index(drop=True)
print (Out)
0 21
1 51
Name: Value, dtype: int64
或者,如果可能,使用不同的Series
长度,请使用Series.add
:
Out = Xs.reset_index(drop=True).add(Ys.reset_index(drop=True), fill_value=0)
或者如果总长度为Series
的总长度为1d numpy数组,则为:
Out = pd.Series(Xs.values + Ys.values)
print (Out)
0 21
1 51
dtype: int64
答案 1 :(得分:1)
我更喜欢@jezrael的答案,但我想分享我的想法。
Xs = df.loc[df['Item'] == 'X', 'Value'].tolist()
Ys = df.loc[df['Item'] == 'Y', 'Value'].tolist()
Out = pd.Series(list(map(sum, zip(Xs, Ys))))
print(Out)