如何自动按时间将数据框列按每个指定时间递增,并将日期按天自动递增?

时间:2019-02-28 06:54:04

标签: python python-3.x pandas datetime dataframe

具有包含值的df

             0     |   1
2019-02-22 13:40:58|  sun 
2019-02-22 13:40:58|  earth
2019-02-22 13:40:58|  mercury
2019-02-22 13:40:58|  moon
2019-02-22 13:40:58|  mars
2019-02-22 13:40:58|  jupyter

1。如何在每种情况下自动将时间增加一分钟

所需的输出1。

            0      |   1
2019-02-22 13:41:58|  sun 
2019-02-22 13:42:58|  earth
2019-02-22 13:43:58|  mercury
2019-02-22 13:44:58|  moon
2019-02-22 13:45:58|  mars
2019-02-22 13:46:58|  jupyter

2。通过使用此功能,我们可以在

之间添加日期
df[0] = pd.to_datetime(df[0], unit='ms').dt.strftime('%Y-%m-%d %a %H:%M:%S')

结果

2019-02-08 Fri 12:19:06

如何同时增加这些值

输出2(包括日期)

            0      |   1
2019-02-17 sun  13:41:58|  sun 
2019-02-18 mon  13:42:58|  earth
2019-02-19 tue  13:43:58|  mercury
2019-02-20 wed  13:44:58|  moon
2019-02-21 thur 13:45:58|  mars
2019-02-22 fri  13:46:58|  jupyter

1 个答案:

答案 0 :(得分:1)

您可以转换Seriesarray的{​​{3}}的增减,并加上或减去datetime的s:

df[0] = pd.to_datetime(df[0], unit='ms')

如果需要为每个唯一的日期时间增加和减少分钟和天:

s1 = pd.to_timedelta(df.groupby(0).cumcount() + 1, unit='m')
s2 = pd.to_timedelta(df.groupby(0).cumcount(ascending=False), unit='d')

或者第一列中所有相同的日期时间:

s1 = pd.to_timedelta(np.arange(1, len(df) + 1), unit='m')
s2 = pd.to_timedelta(np.arange(len(df)-1,-1, -1), unit='d')

df[0] = (df[0] + s1 - s2).dt.strftime('%Y-%m-%d %a %H:%M:%S')
print (df)
                         0        1
0  2019-02-17 Sun 13:41:58      sun
1  2019-02-18 Mon 13:42:58    earth
2  2019-02-19 Tue 13:43:58  mercury
3  2019-02-20 Wed 13:44:58     moon
4  2019-02-21 Thu 13:45:58     mars
5  2019-02-22 Fri 13:46:58  jupyter