考虑data下面包含一些 nan :
Column-1 Column-2 Column-3 Column-4 Column-5
0 NaN 15.0 63.0 8.0 40.0
1 60.0 51.0 NaN 54.0 31.0
2 15.0 17.0 55.0 80.0 NaN
3 54.0 43.0 70.0 16.0 73.0
4 94.0 31.0 94.0 29.0 53.0
5 99.0 52.0 77.0 91.0 58.0
6 84.0 19.0 36.0 NaN 97.0
7 41.0 91.0 62.0 67.0 68.0
8 44.0 38.0 27.0 53.0 37.0
9 58.0 NaN 63.0 57.0 28.0
10 66.0 68.0 89.0 36.0 47.0
11 7.0 81.0 5.0 …Run Code Online (Sandbox Code Playgroud) 我的数据有一个datetime这样的索引2016-11-05 23:40:00。
我想将日期时间元素提取到年、月和日的三个新列中。我使用以下
import datetime as dt
df['year'] = df.index.year
df['month'] = df.index.month
df['day'] = df.index.day
Run Code Online (Sandbox Code Playgroud)
但是 rusults 是浮动的
year month day
2016.0 11.0 5.0
Run Code Online (Sandbox Code Playgroud)
我想要
year month day
2016 11 5
Run Code Online (Sandbox Code Playgroud)
帮助表示赞赏。
我想使用前几天相同小时数中的平均值来填充NaN。为了简化,这是我的df的示例。
timstamp data
22/04/2016 09:00 1
22/04/2016 09:05 2
...
23/04/2016 09:00 3
23/04/2016 09:05 4
...
24/04/2016 09:00 5
24/04/2016 09:05 6
...
25/04/2016 09:00 7
25/04/2016 09:05 8
...
25/04/2016 10:00 NaN
25/04/2016 10:05 NaN
Run Code Online (Sandbox Code Playgroud)
实际数据包含连续5分钟间隔的许多天。
df = df.groupby(df.index.minute).fillna(df.data.rolling(3).mean()) 尝试在过去几天的前一小时进行滚动平均,但没有效果。
df = df.groupby(df.index.minute).ffill()从前两行(即7和8)中获取值的另一种方法是从同一天的前一小时的同一分钟开始。
但是,我想要以下结果:
timstamp data
22/04/2016 09:00 1
22/04/2016 09:05 2
...
23/04/2016 09:00 3
23/04/2016 09:05 4
...
24/04/2016 09:00 5
24/04/2016 09:05 6
...
25/04/2016 09:00 7
25/04/2016 09:05 8
25/04/2016 10:00 3
25/04/2016 …Run Code Online (Sandbox Code Playgroud) python ×3
pandas ×2
dataframe ×1
datetime ×1
fill ×1
group-by ×1
imputation ×1
missing-data ×1
scikit-learn ×1
time-series ×1