用python数据帧重新排列连续数据日志

2024-09-29 02:15:38 发布

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

作为熊猫的新手,我正在努力解决一个数据安排问题。你知道吗

我从熊猫数据帧中的日志文件中获得了大量数据,其结构如下:

day   user   measure1   measure2   ...
1     u1     xxxxx      yyyyy      ...
1     u2     xxxxx      yyyyy      ...
1     u3     xxxxx      yyyyy      ...
2     u2     xxxxx      yyyyy      ...
2     u4     xxxxx      yyyyy      ...
2     u3     xxxxx      yyyyy      ...
3     u1     xxxxx      yyyyy      ...
3     u3     xxxxx      yyyyy      ...
...   ...    ...        ...        ...

因此,并非每个用户每天都出现,而数据既不按天也不按用户排序。但是,如果出现条目,则is具有所有度量。你知道吗

现在,我需要重新排列这些数据,以获得一个2D表格“每个用户”与“每天”的每一个测量值,并用零来填补空白

For measure1:                      For measure2:
      u1     u2     u3     u4            u1     u2     u3     u4
1  xxxxx  xxxxx  xxxxx      0      1  yyyyy  yyyyy  yyyyy      0  
2      0  xxxxx  xxxxx  xxxxx      2      0  yyyyy  yyyyy  yyyyy  
3  xxxxx      0  xxxxx      0      3  yyyyy      0  yyyyy      0  

我怎样才能在Python3中处理熊猫呢? 我也对其他的解决方案持开放态度,比如用numpy代替熊猫。你知道吗

到目前为止,我成功地提取了数据集中所有发生的用户和天数的数组,但不知道如何巧妙地分配测量数据。你知道吗

在这件事上我很感激你的帮助。你知道吗


Tags: 文件数据用户for结构xxxxxday新手
2条回答

似乎您需要一个多索引数据帧(index1:day,index2:measure)

棘手的部分是,您可能需要在这些操作之前转置数据帧。看看这个问题的答案,它看起来和你的答案相似Constructing 3D Pandas DataFrame

希望有帮助

你需要set_indexunstack

df.set_index(['day','user']).measure1.unstack(fill_value=0)
Out[6]: 
user     u1     u2     u3     u4
day                             
1     xxxxx  xxxxx  xxxxx      0
2         0  xxxxx  xxxxx  xxxxx
3     xxxxx      0  xxxxx      0
df.set_index(['day','user']).measure2.unstack(fill_value=0)
Out[7]: 
user     u1     u2     u3     u4
day                             
1     yyyyy  yyyyy  yyyyy      0
2         0  yyyyy  yyyyy  yyyyy
3     yyyyy      0  yyyyy      0

相关问题 更多 >