[英]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_index
和unstack
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.