首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas Dataframe (python)中按时间戳分组数据序列

问Pandas Dataframe (python)中按时间戳分组数据序列
EN

Stack Overflow用户
提问于 2021-10-15 09:14:56
回答 1查看 58关注 0票数 1

我有Pandas Dataframe如下所示:

代码语言:javascript
复制
                                    redacted_name_1  \
0  [1628377576.0, 1628377939.98, 1628377942.04, 1...   
1  [295.257080078125, 295.1255187988281, 295.2570...   

                                   redacted_name_2   \
0  [1628377494.927, 1628377855.377, 1628377957.39...   
1  [9.3e-09, 9.3e-09, 9.2e-09, 9.3e-09, 9.2e-09, ...   

                                   redacted_name_3   \
0  [1628377543.443, 1628377903.8830001, 162837826...   
1  [1.7e-08, 1.7e-08, 1.7e-08, 1.7e-08, 1.7e-08, ...   

                                   redacted_name_4   \
0  [1628377235.24, 1628377840.33, 1628378440.54, ...   
1  [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...   

对于每个帧,序列0是一个时间戳。序列1对于每一个帧都是一个值。

我想合并他们,以便更容易地处理(对我)的时间戳。拥有这样的东西:

代码语言:javascript
复制
Timestamp, redacted_name_1 , redacted_name_2, redacted_name_3, redacted_name_4,
1628377576, 295.257080078125, NaN, NaN, NaN, 
1628377494, NaN, 9.3e-09, NaN, NaN,

时间戳应四舍五入为秒。

如果阅读恰好在同一时间,那么它应该和另一行放在一起。

没有时间戳复制。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-15 09:31:51

使用列表理解来创建Series,通过concat连接起来,如果有必要的话,使用转换为datetime的最后一个圆圈:

代码语言:javascript
复制
print (df)
                                 redacted_name_1  \
0     [1628377576.0,1628377939.98,1628377942.04]   
1  [295.257080078125,295.1255187988281,295.2570]   

                                 redacted_name_2  
0  [1628377494.927,1628377855.377,1628377957.39]  
1                      [9.3e-09,9.3e-09,9.2e-09] 

#if necessary convert strings to lists
#import ast
#df = df.applymap(ast.literal_eval)

L = [pd.Series(df.loc[1, x], index=df.loc[0, x], name=x) for x in df.columns]
df = pd.concat(L,axis=1)

代码语言:javascript
复制
df.index = np.round(df.index).astype(np.int64)
print (df)
            redacted_name_1  redacted_name_2
1628377495              NaN     9.300000e-09
1628377576       295.257080              NaN
1628377855              NaN     9.300000e-09
1628377940       295.125519              NaN
1628377942       295.257000              NaN
1628377957              NaN     9.200000e-09

或者:

代码语言:javascript
复制
df.index = pd.to_datetime(np.round(df.index).astype(np.int64), unit='s')
print (df)
                     redacted_name_1  redacted_name_2
2021-08-07 23:04:55              NaN     9.300000e-09
2021-08-07 23:06:16       295.257080              NaN
2021-08-07 23:10:55              NaN     9.300000e-09
2021-08-07 23:12:20       295.125519              NaN
2021-08-07 23:12:22       295.257000              NaN
2021-08-07 23:12:37              NaN     9.200000e-09
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69582457

复制
相关文章

相似问题

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