pandas 如何查找在开始日期和结束日期上给出的 Dataframe 的差异

yeotifhr  于 2022-12-28  发布在  其他
关注(0)|答案(2)|浏览(115)

我必须找出连续七天每天00:00:00和23:59:59提供的数据的差异,如何找出数据框中的差异,数据框是在开始日期和结束日期上给出的?
样本数据

Date                         Data
2018-12-01 00:00:00          2
2018-12-01 12:00:00          5
2018-12-01 23:59:59          10
2018-12-02 00:00:00          12
2018-12-02 12:00:00          15
2018-12-02 23:59:59          22

预期输出

Date                        Data
2018-12-01                   8
2018-12-02                   10
avkwfej4

avkwfej41#

    • 示例**
data = {
    'Date': ['2018-12-01 00:00:00', '2018-12-01 12:00:00', '2018-12-01 23:59:59',
             '2018-12-02 00:00:00', '2018-12-02 12:00:00', '2018-12-02 23:59:59'],
    'Data': [2, 5, 10, 12, 15, 22]
}
df = pd.DataFrame(data)
    • 代码**
df['Date'] = pd.to_datetime(df['Date'])
out = (df.resample('D', on='Date')['Data']
       .agg(lambda x: x.iloc[-1] - x.iloc[0]).reset_index())

第一个月

Date        Data
0   2018-12-01  8
1   2018-12-02  10
    • 更新**

更有效的方法
你可以得到相同的结果下面的代码:

g = df.resample('D', on='Date')['Data']
out = g.last().sub(g.first()).reset_index()
0md85ypi

0md85ypi2#

您可以使用groupby并使用min-max range进行迭代。

import pandas as pd

df = pd.DataFrame({
    'Date': ['2018-12-01 00:00:00', '2018-12-01 12:00:00', '2018-12-01 23:59:59', 
             '2018-12-02 00:00:00', '2018-12-02 12:00:00', '2018-12-02 23:59:59'],
    'Data': [2, 5, 10, 12, 15, 22]
})

df['Date'] = pd.to_datetime(df['Date'])

df['Date_Only'] = df['Date'].dt.date
result = df.groupby('Date_Only').apply(lambda x: x['Data'].max() - x['Data'].min())

print(result)

相关问题