2016-11-10 12 views
0

複数のDataFramesで操作を実行する方法をまだ検討していますが、Pythonではpandasを形成しています。pandasの別のDataFrameのインデックスとして1つのDataFrameを使用する

私は、次の3つのデータフレーム(d1d2、およびd3)を持っている: enter image description here

user_id内のすべてのユーザーのために、私は、df3に「週間の指標として、列df2の値を使用する必要がありますdf1のそれぞれの値にそれらを乗算します。

例:ユーザー163、列measurementsの値が0.0(df2)です。このユーザー/列の最終的な値は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を強くお勧めします。

関連する問題