gpt4 book ai didi

python - Pandas 在 python 中填充昨天数据(相同的 DateTime)中的缺失值

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:49 24 4
gpt4 key购买 nike

我正在尝试用 python 填补昨天(前一天的数据)之前的缺失值。同样,我正在尝试使用以下代码但没有获得预期的输出。

代码

import pandas as pd

df = pd.read_csv(r'input_3.csv')
saved_column = df.Value #you can also use df['column_name']


df['DateTime'] = pd.DatetimeIndex(df['DateTime'])

b = df.loc[df.Value.isnull(), 'Value'] = \
df.loc[df.Value.isnull(), 'Value'].map(df.loc[df.Value.notnull()] \
.set_index('DateTime')['Value'])
print b

昨天的数据:

block   DateTime    Value
1 09-01-2016 00:00 -0.886492
2 09-01-2016 01:00 -0.500995
3 09-01-2016 02:00 4
4 09-01-2016 03:00 5
5 09-01-2016 04:00 2.145205
6 09-01-2016 05:00 0.475309

今天的数据:

1   10-01-2016 00:00    -0.886492
2 10-01-2016 01:00 -0.500995
3 10-01-2016 02:00 NaN
4 10-01-2016 03:00 NaN
5 10-01-2016 04:00 2.145205
6 10-01-2016 05:00 0.475309

预计填充今天的数据:

1   10-01-2016 00:00    -0.886492
2 10-01-2016 01:00 -0.500995
3 10-01-2016 02:00 5
4 10-01-2016 03:00 2.145205
5 10-01-2016 04:00 2.145205
6 10-01-2016 05:00 0.475309

请建议我一些相同的方法。提前谢谢你

我试过使用这篇文章Fill values from one dataframe to another with matching IDs但没有得到预期的输出

最佳答案

您可以使用 read_csv使用另一个参数 index_colparse_datesdayfirst=True for DatetimeIndex first:

df = pd.read_csv(r'input_3.csv', index_col=[1], parse_dates=[1], dayfirst=True)
print (df)
block Value
DateTime
2016-01-09 00:00:00 1 -0.886492
2016-01-09 01:00:00 2 -0.500995
2016-01-09 02:00:00 3 4.000000
2016-01-09 03:00:00 4 5.000000
2016-01-09 04:00:00 5 2.145205
2016-01-09 05:00:00 6 0.475309
2016-01-10 00:00:00 1 -0.886492
2016-01-10 01:00:00 2 -0.500995
2016-01-10 02:00:00 3 NaN
2016-01-10 03:00:00 4 NaN
2016-01-10 04:00:00 5 2.145205
2016-01-10 05:00:00 6 0.475309

然后用 fillna 替换 NaNs与 shiftdatetime 编辑一天:

df['Value'] = df['Value'].fillna(df.shift(freq='1d')['Value'])
df = df.reset_index()
print (df)
DateTime block Value
0 2016-01-09 00:00:00 1 -0.886492
1 2016-01-09 01:00:00 2 -0.500995
2 2016-01-09 02:00:00 3 4.000000
3 2016-01-09 03:00:00 4 5.000000
4 2016-01-09 04:00:00 5 2.145205
5 2016-01-09 05:00:00 6 0.475309
6 2016-01-10 00:00:00 1 -0.886492
7 2016-01-10 01:00:00 2 -0.500995
8 2016-01-10 02:00:00 3 4.000000
9 2016-01-10 03:00:00 4 5.000000
10 2016-01-10 04:00:00 5 2.145205
11 2016-01-10 05:00:00 6 0.475309

关于python - Pandas 在 python 中填充昨天数据(相同的 DateTime)中的缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50576681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com