【问题标题】:How do I create a calculated series based on if else using data in columns and rows using Pandas如何使用 Pandas 使用列和行中的数据创建基于 if else 的计算系列
【发布时间】:2020-09-04 22:23:21
【问题描述】:

下面是一个数据框,我在其中计算前一行 STime 和当前行 STime 之间的时间差。但是,我真正想做的是根据其他条件(例如具有相同日期)填充此 timeDiffTemp 列。是的,我对 pandas 是全新的 - 并且意识到这对你们中的许多人来说是微不足道的。所以...提前感谢您的热心帮助。

         SDate     STime      timeDiffTemp
0   2017-12-06  07:00:00               NaT
1   2017-12-06  09:55:00          02:55:00
2   2017-12-06  10:25:00          00:30:00
3   2017-12-06  15:30:00          05:05:00
4   2017-12-07  10:00:00 -1 days +18:30:00
df["STime"] = pd.to_datetime(df["STime"])  # convert STime to a datetime field
df["SDate"] = pd.to_datetime(df["SDate"])  # convert STime to a datetime field
df['timeDiffTemp'] = df['STime'] - df['STime'].shift(1)
df['timeDiff'] = df['timeDiffTemp'].apply(lambda x: df['timeDiffTemp'] if (df['SDate'] == df['SDate'].shift(1)) else 'NA')

【问题讨论】:

  • 对数据框格式感到抱歉

标签: python pandas if-statement lambda conditional-statements


【解决方案1】:

您需要在 SDate 列上使用 groupby 才能在同一日期一次操作,在 STime 列上需要 diff

df['timeDiff'] = df.groupby('SDate')['STime'].diff()

【讨论】:

    猜你喜欢
    • 2017-05-05
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2021-09-13
    相关资源
    最近更新 更多