用第一个值减去熊猫数据框中的一列
Posted
技术标签:
【中文标题】用第一个值减去熊猫数据框中的一列【英文标题】:Subtract a column in pandas dataframe by its first value 【发布时间】:2017-02-20 20:01:50 【问题描述】:我需要用它的第一个值减去一列熊猫数据框中的所有元素。
在这段代码中,pandas 抱怨 self.inferred_type,我猜这是循环引用。
df.Time = df.Time - df.Time[0]
在这段代码中,pandas 抱怨在副本上设置值。
df.Time = df.Time - df.iat[0,0]
在 Pandas 中进行此计算的正确方法是什么?
【问题讨论】:
【参考方案1】:我认为您可以通过iloc
选择Time
列中的第一项:
df.Time = df.Time - df.Time.iloc[0]
示例:
start = pd.to_datetime('2015-02-24 10:00')
rng = pd.date_range(start, periods=5)
df = pd.DataFrame('Time': rng, 'a': range(5))
print (df)
Time a
0 2015-02-24 10:00:00 0
1 2015-02-25 10:00:00 1
2 2015-02-26 10:00:00 2
3 2015-02-27 10:00:00 3
4 2015-02-28 10:00:00 4
df.Time = df.Time - df.Time.iloc[0]
print (df)
Time a
0 0 days 0
1 1 days 1
2 2 days 2
3 3 days 3
4 4 days 4
注意:
对我来说,你的两种方式也很完美。
【讨论】:
太棒了!对我来说,在副本上设置值的警告只出现一次,这真的很奇怪。 df.Time 是副本还是对原始数据帧的引用? 我认为是参考,因为不能以这种方式创建新列 -df.newcol = df.Time - df.Time.iloc[0]
关于警告 - 有时会发生。你的熊猫是什么版本的?
熊猫的版本是0.14.1。
嗯,真的很老了。现在最后是0.19.0
。我认为你可以升级。以上是关于用第一个值减去熊猫数据框中的一列的主要内容,如果未能解决你的问题,请参考以下文章