2016-11-10 46 views
0

仍試圖找出如何在Python中使用多個DataFrames形成pandas的操作。使用一個DataFrame作爲熊貓中的另一個DataFrame的索引

我有以下三個dataframes(d1d2d3): enter image description here

對於每一個用戶在user_id,我需要在df3df2使用列中的值作爲「周指數,並將它們乘以df1中的相應值。

例如:用戶163,列measurements具有值0.0(來自df2)。 df3在第0.0周查找的結果爲2.對於此用戶/列計算的最終值爲2(從df1)乘以2 = 4.

我需要爲user_id中的所有用戶以及所有用戶欄目(活動,營養等)

任何想法?

我一直在玩.apply,但我發現很難正確地解決問題。

回答

0

我認爲,關鍵是將所有這些數據放在一起。你可以用它分別由迭代和來回工作,但更容易和強大的使用熊貓merge功能,像這樣:

import pandas as pd 

data1 = {'user_id':[163], 'measurements':[2.0]} 
data2 = {'user_id':[163], 'measurements':[0.0]} 
data3 = {'weeks':[0.0], 'measurements':[2.0]} 

df1 = pd.DataFrame(data1) 
df2 = pd.DataFrame(data2) 
df3 = pd.DataFrame(data3) 

df = df1.merge(df2, on='user_id', how='outer', suffixes=['_df1', '_df2']) 
df = df.merge(df3, left_on='measurements_df2', right_on='weeks', 
       how='outer', suffixes=['', '_df3']) 
df['new_val'] = df['measurements_df1'] * df['measurements'] 

In [13]: df 
Out[13]: 
    measurements_df1 user_id measurements_df2 measurements weeks new_val 
0    2.0  163    0.0   2.0 0.0  4.0 

在未來它的容易得多,如果你給我們一個重複的例子,上班特別是如果你可以在你的嘗試中包含錯誤,但在這種情況下,我知道你的意思是很難弄清楚如何正確地構建問題。我強烈建議Wes McKinney的book from the creator of Pandas