如何在列表中添加多个熊猫数据集的项目 - python

时间:2017-09-16 03:54:23

标签: python pandas dataframe

我有一个列表' final_value'其中包含熊猫系列,下面有数据。我需要将多个熊猫系列的瓦片添加到一个系列中。 任何人都可以帮助我。

需要根据索引值添加值。

我在循环中尝试了final_value[i].add(final_value[i+1])。但没有工作

数据:

[0      0.000000
1     14.522873
2     21.677418
3     10.791055
4      0.000000
5      7.176507
Name: (FDIUSGD Index, PX_LAST), Length: 6, dtype: float64, 
0    -16.276548
1    -16.276548
2    -15.761264
3    -16.276548
4    -16.276548
5    -17.822402
Name: (USHBMIDX Index, PX_LAST), Length: 6, dtype: float64, 
0      0.000000
1      5.972322
2     15.255200
3     -3.498313
4      2.698414
5      3.083199
Name: (USPHNSA Index, PX_LAST), Length: 6, dtype: float64, 

预期产出:

0     -16.276548
1     4.218647
2     21.171354
3    -8.983806
4    -13.578134
5    -7.562696

谢谢!

3 个答案:

答案 0 :(得分:4)

final_value = [
    pd.Series(1, range(5)),
    pd.Series(2, range(5)),
    pd.Series(3, range(5))
]

只需使用sum

即可
sum(final_value)

0    6
1    6
2    6
3    6
4    6
dtype: int64

或者您可以使用np.sum

pd.Series(np.sum([s.values for s in final_value], 0), final_value[0].index)

0    6
1    6
2    6
3    6
4    6
dtype: int64

答案 1 :(得分:3)

我们试试这个:

from functools import reduce
reduce(pd.Series.add, final_value)

示例:

print(final_values)

输入df:

[0     0.000000
1    14.522873
2    21.677418
3    10.791055
4     0.000000
5     7.176507
Name: 1, dtype: float64, 0   -16.276548
1   -16.276548
2   -15.761264
3   -16.276548
4   -16.276548
5   -17.822402
Name: 1, dtype: float64, 0     0.000000
1     5.972322
2    15.255200
3    -3.498313
4     2.698414
5     3.083199
Name: 1, dtype: float64]


from functools import reduce
reduce(pd.Series.add,final_value)

输出:

0   -16.276548
1     4.218647
2    21.171354
3    -8.983806
4   -13.578134
5    -7.562696
Name: 1, dtype: float64

计时....

约翰的方法

%timeit pd.concat(final_value, axis=1).sum(axis=1)
  

100个循环,最佳3:3.06 ms每个循环

functools reduce方法

%timeit reduce(pd.Series.add, final_value)
  

1000次循环,最佳3次:每次循环551μs

答案 2 :(得分:2)

使用pd.concat上的axis=1sum

In [597]: pd.concat(final_value, axis=1).sum(axis=1)
Out[597]:
0   -16.276548
1     4.218647
2    21.171354
3    -8.983806
4   -13.578134
5    -7.562703
dtype: float64

详细

In [598]: final_value
Out[598]:
[0     0.000000
 1    14.522873
 2    21.677418
 3    10.791055
 4     0.000000
 5     7.176500
 Name: 1, dtype: float64, 0   -16.276548
 1   -16.276548
 2   -15.761264
 3   -16.276548
 4   -16.276548
 5   -17.822402
 Name: 1, dtype: float64, 0     0.000000
 1     5.972322
 2    15.255200
 3    -3.498313
 4     2.698414
 5     3.083199
 Name: 1, dtype: float64]