2017-08-28 163 views
0

我有一個數據幀像這樣:熊貓據幀過濾矢量

a = date  | user | value 
    ------------------------- 
    2017-05-01 | AAA | 1 
    2017-05-02 | AAA | 2 
    ...  | AAA | ... 
    2017-08-31 | AAA | 1.7 
    2017-05-01 | BBB | 1.5 
    2017-05-02 | BBB | 3 
    ...  | BBB | ... 
    2017-08-31 | BBB | 2.7 

另外,我有一個列表,像這樣:

b = start_date | user 
    ----------------- 
    2017-05-02 | AAA 
    2017-05-05 | AAA 
    2017-05-03 | BBB 

我現在想從該提取3維矩陣包含從b給出的用戶給出的start_date開始的3個下一個日期的列表。所以在上面的例子中如下:

[ 
[[2017-05-02, AAA, 2], [2017-05-03, AAA, x], [2017-05-04, AAA, x]], 
[[2017-05-05, AAA, 2], [2017-05-06, AAA, x], [2017-05-07, AAA, x]], 
[[2017-05-03, BBB, 2], [2017-05-04, BBB, x], [2017-05-05, BBB, x]], 
] 

x代表隨機值,我只是懶得輸入所有的例子。

我正在使用Python 3.5。預先感謝了很多人。我期待着您的智能答案:-)

+0

你可以設置你的數據幀,以便它們可以複製和粘貼,就像它們顯示在這裏一樣(https://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples)還有,結構b正確。這不是如何設置列表。 – DJK

回答

2

試試這個..另外,還要檢查link「如何使重複性好大熊貓的例子」

DF=pd.merge(df1,df2,on='user',how='outer') 
DF['DIFF']=DF['date_x']-DF['date_y'] 
DF=DF.loc[(DF.DIFF/np.timedelta64(1, 'D')>=0)&(DF.DIFF/np.timedelta64(1, 'D')<=2),:] 
DF.drop('DIFF',1).groupby([DF.index.get_level_values(0),'date_y'])['date_x','user','value'].\ 
    apply(lambda x :x.values.tolist()).values.tolist() 

Out[760]: 
[[[Timestamp('2017-05-02 00:00:00'), 'AAA ', 2.0], 
    [Timestamp('2017-05-03 00:00:00'), 'AAA ', 2.0], 
    [Timestamp('2017-05-04 00:00:00'), 'AAA ', 2.0]], 
[[Timestamp('2017-05-05 00:00:00'), 'AAA ', 2.0], 
    [Timestamp('2017-05-06 00:00:00'), 'AAA ', 2.0], 
    [Timestamp('2017-05-07 00:00:00'), 'AAA ', 1.7]], 
[[Timestamp('2017-05-03 00:00:00'), 'BBB ', 3.0], 
    [Timestamp('2017-05-04 00:00:00'), 'BBB ', 3.0], 
    [Timestamp('2017-05-05 00:00:00'), 'BBB ', 3.0]]] 

數據輸入


df1 
Out[748]: 
     date user value 
0 2017-05-01 AAA  1.0 
1 2017-05-02 AAA  2.0 
2 2017-05-03 AAA  2.0 
3 2017-05-04 AAA  2.0 
4 2017-05-05 AAA  2.0 
5 2017-05-06 AAA  2.0 
6 2017-05-07 AAA  1.7 
7 2017-05-01 BBB  1.5 
8 2017-05-02 BBB  3.0 
9 2017-05-03 BBB  3.0 
10 2017-05-04 BBB  3.0 
11 2017-05-05 BBB  3.0 

df2 
Out[749]: 
     date user 
0 2017-05-02 AAA 
1 2017-05-05 AAA 
2 2017-05-03 BBB 
+1

感謝您的幫助。我將關注未來構建正確的熊貓數據幀。謝謝! –