python - 用第一个值减去 Pandas 数据框中的一列

标签 python datetime pandas time subtraction

我需要用第一个值减去 pandas 数据框中一列中的所有元素。

在这段代码中,pandas 提示 self.inferred_type,我猜这是循环引用。

df.Time = df.Time - df.Time[0]

在此代码中,pandas 提示在副本上设置值。

df.Time = df.Time - df.iat[0,0]

在 Pandas 中进行此计算的正确方法是什么?

最佳答案

我认为您可以通过 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

注意事项:

对我来说,您的 2 种方式也非常有效。

关于python - 用第一个值减去 Pandas 数据框中的一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39991471/

相关文章:

python - 如何将用 Pandas 提取的一列excel数据中的NaN替换为0

python - 是否可以运行所有单元测试?

python - 如何使用 Pandas 进行数据分析(如计数、ucounts、频率)?

Python/Django 将 u'' 字符串写入 Postgresql(使用 UTF8 数据库)和 Munges 条目

python - 如何用图像中每个像素的颜色绘制图形?

javascript - 验证 JS 中开放时间之间的日期

ruby-on-rails - 在 Rails 的日期时间列中存储 ISO8601 的最佳方法?

sql - 对列值的更改 date_trunc 进行不同搜索

python - 如何折叠/旋转多个 Pandas 列

python - 在 pandas 数据框中,计算某一列中某个条件发生的次数?