Python 从df中的特定值返回序列
我试图返回一个序列,该序列包含来自pandasPython 从df中的特定值返回序列,python,pandas,dataframe,Python,Pandas,Dataframe,我试图返回一个序列,该序列包含来自pandasdf中特定值的一些加法。具体来说,对于下面的df。我想将所有的X与所有的Y相加。但这些并没有具体的顺序 import pandas as pd d = ({ 'Item' : ['X','Y','Z','X','Z','Y','Z'], 'Value' : [10,11,20,21,10,30,31],
df
中特定值的一些加法。具体来说,对于下面的df
。我想将所有的X
与所有的Y
相加。但这些并没有具体的顺序
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
这里的问题是不同的索引,因此需要相同的索引和
drop=True
:
Out = Xs.reset_index(drop=True) + Ys.reset_index(drop=True)
print (Out)
0 21
1 51
Name: Value, dtype: int64
或者如果可能,使用不同长度的系列
:
或者,如果序列长度始终相同,则可以求和1d numpy数组:
Out = pd.Series(Xs.values + Ys.values)
print (Out)
0 21
1 51
dtype: int64
我更喜欢@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)
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)