当前位置:  开发笔记 > 编程语言 > 正文

Pandas,如何从系列中的所有值中减去第一行值?

如何解决《Pandas,如何从系列中的所有值中减去第一行值?》经验,为你挑选了1个好方法。

我在Pandas中有一个Series对象,我想从系列的所有值中减去一个等于系列第一个值的数字.

例如:

这个:

2015-10-01: 5000
2015-10-02: 5005
2015-10-03: 5012

成为这个:

2015-10-01: 0
2015-10-02: 5
2015-10-03: 12

这是可能的本地Pandas方法?或者我应该遍历所有值并减去?



1> EdChum - Rei..:

您可以使用第一行值iloc[0],然后从系列的其余部分中减去:

In [5]:
import io
import pandas as pd
t="""2015-10-01 5000
2015-10-02 5005
2015-10-03 5012"""
s = pd.read_csv(io.StringIO(t), index_col=[0], parse_dates=[0], header=None, delim_whitespace=True, squeeze=True)
s

Out[5]:
0
2015-10-01    5000
2015-10-02    5005
2015-10-03    5012
Name: 1, dtype: int64

In [6]:    
s - s.iloc[0]

Out[6]:
0
2015-10-01     0
2015-10-02     5
2015-10-03    12
Name: 1, dtype: int64

可以使用head(1)但你需要索引数组以获得标量值,否则你会NaN因为索引对齐而在第2行开始:

In [9]:
s - s.head(1)[0]

Out[9]:
0
2015-10-01     0
2015-10-02     5
2015-10-03    12
Name: 1, dtype: int64

与之比较:

In [10]:
s - s.head(1)

Out[10]:
0
2015-10-01     0
2015-10-02   NaN
2015-10-03   NaN
Name: 1, dtype: float64

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有