【问题标题】:Find difference between many datetime columns in pandas查找熊猫中许多日期时间列之间的差异
【发布时间】:2019-01-03 15:45:32
【问题描述】:

我有一个包含 282 列和 14000 行的数据框。它看起来如下:

                                    0           1               ...     282
uref_fixed      
0006d730f5aa8492a59150e35bca5cc6    3/26/2018   7/3/2018        ...
00076311c47c44c33ffb834b1cebf5db    5/13/2018   5/13/2018       ...
0009ba8a69924902a9692c5f3aacea7f    7/13/2018   None            ...
000dccb863b913226bca8ca636c9ddce    11/5/2017   11/10/2017      ... 

我试图在索引 0 处得到一列,对于每一行,显示每一行中每个连续日期值之间差异的平均值(即第 2 列和第 3 列中的差异日期,然后是差异 3 和4,然后是差异 4 和 5 等,然后是所有这些的平均值)

请注意,一行中最多可以有 282 个日期值,但正如您所见,许多日期值更少。

干杯

【问题讨论】:

  • 欢迎来到 SO。请提供 minimal reproducible example。这意味着没有图像/链接。
  • None 值的情况下你想做什么?例如,7/13/2018None 之间的平均值是多少?
  • 一旦有'none',它就会继续这样,因此在该行中没有更多的时间差值可以获取,因此它将为该行完成

标签: python pandas


【解决方案1】:
from datetime import datetime as dt
#df is your dataframe, df2 is a new one you have to initialize as empty
def diffdate(df, col1, col2):
    if df[col1]==None or df[col2]==None:
        return None
    date1 = [int(i) for i in df[col1].split('/')]
    date2 = [int(i) for i in df[col2].split('/')]
    return (dt(date2[2],date2[0],date2[1]) - dt(date1[2],date1[0],date1[1])).days
for i in range(len(df.columns)-1):
    df2[i] = df.apply(lambda x: diffdate(df, i, i+1),axis = 1)

df2 将保存所有连续的对差异。在此之后平均行非常简单。

【讨论】:

  • 您好,感谢您的帮助。此解决方案返回 ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
  • 并确保点击左侧的绿色检查!
  • 嗨,再次感谢您的帮助,但仍然遇到同样的错误
  • 我运行的每个测试用例都非常好
猜你喜欢
  • 1970-01-01
  • 2017-03-21
  • 2017-09-07
  • 2016-11-06
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
相关资源
最近更新 更多