首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >那一天的temperature_min和temperature_max怎么用熊猫来填满一天的休息时间呢?

那一天的temperature_min和temperature_max怎么用熊猫来填满一天的休息时间呢?
EN

Stack Overflow用户
提问于 2018-08-30 14:30:13
回答 4查看 78关注 0票数 1

我有一个dataframe,它有4列:daytimetmintmax。tmin显示当天的temperature_min,tmax显示temperature_max.我想要的是能够用那一天的tmin和tmax填充一天的所有NaN值。例如,我想转换这个数据文件:

代码语言:javascript
复制
   day time     tmin tmax 
0   01 00:00:00 NaN NaN
1   01 03:00:00 -6.8 NaN
2   01 06:00:00 NaN NaN
3   01 09:00:00 NaN NaN
4   01 12:00:00 NaN NaN
5   01 15:00:00 NaN 1.2
6   01 18:00:00 NaN NaN
7   01 21:00:00 NaN NaN
8   02 00:00:00 NaN NaN
9   02 03:00:00 -7.2 NaN
10  02 06:00:00 NaN NaN
11  02 09:00:00 NaN NaN
12  02 12:00:00 NaN NaN
13  02 15:00:00 NaN 1.8
14  02 18:00:00 NaN NaN
15  02 21:00:00 NaN NaN

到这个数据中心:

代码语言:javascript
复制
       day time     tmin tmax
    0   01 00:00:00 -6.8 1.2
    1   01 03:00:00 -6.8 1.2
    2   01 06:00:00 -6.8 1.2
    3   01 09:00:00 -6.8 1.2
    4   01 12:00:00 -6.8 1.2
    5   01 15:00:00 -6.8 1.2
    6   01 18:00:00 -6.8 1.2
    7   01 21:00:00 -6.8 1.2
    8   02 00:00:00 -7.2 1.8
    9   02 03:00:00 -7.2 1.8
    10  02 06:00:00 -7.2 1.8
    11  02 09:00:00 -7.2 1.8
    12  02 12:00:00 -7.2 1.8
    13  02 15:00:00 -7.2 1.8
    14  02 18:00:00 -7.2 1.8
    15  02 21:00:00 -7.2 1.8
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-08-30 14:44:44

使用groupbytransform

代码语言:javascript
复制
df.assign(**df.groupby('day')[['tmin', 'tmax']].transform('first'))

代码语言:javascript
复制
    day      time  tmin  tmax
0     1  00:00:00  -6.8   1.2
1     1  03:00:00  -6.8   1.2
2     1  06:00:00  -6.8   1.2
3     1  09:00:00  -6.8   1.2
4     1  12:00:00  -6.8   1.2
5     1  15:00:00  -6.8   1.2
6     1  18:00:00  -6.8   1.2
7     1  21:00:00  -6.8   1.2
8     2  00:00:00  -7.2   1.8
9     2  03:00:00  -7.2   1.8
10    2  06:00:00  -7.2   1.8
11    2  09:00:00  -7.2   1.8
12    2  12:00:00  -7.2   1.8
13    2  15:00:00  -7.2   1.8
14    2  18:00:00  -7.2   1.8
15    2  21:00:00  -7.2   1.8

或者,如果您想修改原始的DataFrame而不是返回一个副本:

代码语言:javascript
复制
df[['tmin', 'tmax']] = df.groupby('day')[['tmin', 'tmax']].transform('first')
票数 3
EN

Stack Overflow用户

发布于 2018-08-30 15:12:15

如果您想这样做,不要像@user3483203所做的那样整洁!

代码语言:javascript
复制
import pandas as pd
myfile = pd.read_csv('temperature.txt', sep=' ')
mydata = pd.DataFrame(data = myfile)

for i in mydata['day']:
    row_start = (i-1) * 8 # assuming 8 data points per day
    row_end = (i) * 8
    mydata['tmin'][row_start:row_end] = pd.DataFrame.min(tempdata['tmin'][row_start:row_end], skipna=True)
    mydata['tmax'][row_start:row_end] = pd.DataFrame.max(tempdata['tmax'][row_start:row_end], skipna=True)
票数 1
EN

Stack Overflow用户

发布于 2018-08-30 14:33:27

只需将填充物与前向填充和回填参数一起使用:

代码语言:javascript
复制
df.tmin = df.groupby('day')['tmin'].fillna(method='ffill').fillna(method='bfill')
df.tmax = df.groupby('day')['tmax'].fillna(method='ffill').fillna(method='bfill')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52099548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档