Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从df中的特定值返回序列_Python_Pandas_Dataframe - Fatal编程技术网

Python 从df中的特定值返回序列

Python 从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],

我试图返回一个序列,该序列包含来自pandas
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)