簡體   English   中英

使用python pandas dataframe重新排列連續數據日志

[英]Using python pandas dataframe to rearrange continuous data log

作為熊貓的新手,我正在努力解決數據整理問題。

我從pandas數據框中的日志文件中獲取了大量數據,其結構如下:

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      ...
...   ...    ...        ...        ...

因此,並不是每個用戶每天都出現,而數據既不是按天也不是按用戶排序。 但是,如果發生條目,則具有所有措施。

現在,我需要重新排列此數據以獲得每個度量的二維表“每個用戶”與“每天”,並用零填充空白。例如

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代替pandas。

到目前為止,我設法提取了數據集中所有出現的用戶和天數的數組,但不知道如何巧妙地分配測量數據。

感謝您對此事的幫助。

似乎您想要一個多索引數據框(index1:日期,index2:度量)

棘手的部分是您可能需要在執行這些操作之前轉置數據框。 看看這個問題的答案,它看起來與您的構建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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM