Python,Pandas

2024-04-25 23:19:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在学习python,我想做以下工作:

我得到一个熊猫数据帧:

Time                  A       B       ...   Z
2018-10-17 16:49:56  NaN     NaN      ...  16.28
2018-10-17 22:40:36  NaN     'String' ...  NaN
2018-10-20 01:37:32  NaN     NaN      ...  25.00
2018-10-20 11:30:39  15.0    NaN      ...  NaN
2018-10-20 12:07:04  NaN     NaN      ...  NaN

我想把它变成这样:

Time                  A       B       ...   Z
2018-10-17 16:49:56  NaN     NaN      ...  16.28
2018-10-17 22:40:36  NaN     'String' ...  16.28
2018-10-20 01:37:32  NaN     'String' ...  25.00
2018-10-20 11:30:39  15.0    'String' ...  25.00
2018-10-20 12:07:04  15.0    'String' ...  25.00

我总是把值带到下一行,除非这一行有一个新项。你知道吗

如果我能做到这一点,下一步就是用一个浮点值替换字符串,我可以用df = df.replace('string', value)将时间转换成一个包含秒数的数字t.hour * 3600 + t.minute * 60 + t.second将是我使用模块datetime的第一个选项。目前我不确定这是不是最好的方法,因为我知道,有pandas.to_datetime。你知道吗

Time                  A       B       ...   Z
2018-10-17 16:49:56  NaN     NaN      ...  16.28+0
2018-10-17 22:40:36  NaN     value+0  ...  16.28+1
2018-10-20 01:37:32  NaN     value+1  ...  25.00+0
2018-10-20 11:30:39  15.0    value+2  ...  25.00+1
2018-10-20 12:07:04  15.0    value+3  ...  25.00+2

列数和行数是可变的。你知道吗

我的想法是,构建一个新的数据帧,并逐行提取和比较数据与旧的数据帧,但我不知道具体怎么做,也许有一个更优雅的方法。你知道吗

你能帮我吗?你知道吗


Tags: 数据方法字符串dfdatetimestringtimevalue
1条回答
网友
1楼 · 发布于 2024-04-25 23:19:49

您可以使用ffilldocs

df = df.ffill()

          Time           A        B           Z
0   2018-10-17 16:49:56  NaN     NaN        16.28
1   2018-10-17 22:40:36  NaN    'String'    16.28
2   2018-10-20 01:37:32  NaN    'String'    25.00
3   2018-10-20 11:30:39  15.0   'String'    25.00
4   2018-10-20 12:07:04  15.0   'String'    25.00

相关问题 更多 >

    热门问题