2017-11-15 14 views
0

私はパンダでMYSQLデカルト製品と同等の操作をしたいと思います。例えば、テーブルabについては
は、同じ列名"Price"を持って、私は"a.Price""b,Price"として名前を変更し、1列に合流するから、これら2つの"Price"の属性を防ぎたいです。複数のパンダのデカルト製品DataFrames once

しかし、パンダは唯一彼らの共有の列上の2つのデータフレームをマージすることができますマージ:

dfa = pd.DataFrame({'price': [30,40], 
        'discount': ['0.1', '0.2']}) 

dfb = pd.DataFrame({'price': [100,120], 
        'title': ['abc', 'xyz']}) 

df_result = pd.merge(dfa,dfb,how="outer") 

    discount price title 
0  0.1  30 NaN 
1  0.2  40 NaN 
2  NaN 100 abc 
3  NaN 120 xyz 

結果は次のようになるだろうが、私は、これら二つの"Price"の属性の名前を変更し、2列にそれらを分離します。 同じキーを手動で各DataFrameに追加することをお勧めする他の回答がありましたが、いくつかの大きなDataFrames(2つ以上)を持っているときにこの問題を解決する方法を知りたいと思います。

+0

bあなたのselectステートメントの様子を見るのに役立ちます。 –

+0

通常のSQL文と似ています。 "SELECT a.Price、c.title FROM a、b、c"と同様 – huier

+2

[** MCVE **](https://stackoverflow.com/help/mcve) – piRSquared

答えて

0

私はあなたがこれをしたい理由をかなりわからないんだけど、あなたはすべての列にプレフィックスを追加することができます。私が使用する

In [11]: dfa.add_prefix("a_") 
Out[11]: 
    a_discount a_price 
0  0.1  30 
1  0.2  40 

concatむしろmergeより:

In [12]: pd.concat([dfa.add_prefix("a_"), dfb.add_prefix("b_")]) 
Out[12]: 
    a_discount a_price b_price b_title 
0  0.1  30.0  NaN  NaN 
1  0.2  40.0  NaN  NaN 
0  NaN  NaN 100.0  abc 
1  NaN  NaN 120.0  xyz 

を2つ以上実行するには、リストに多くを渡します。

pd.concat([dfa.add_prefix("a_"), dfb.add_prefix("b_"), dfc.add_prefix("c_")]) 
+0

ありがとうございました。私のデータフレームにもあなたの[0,1]のようなインデックスはありません。それらの間に同じキーがないので、この状況ではまだconcat()を使用できますか? – huier

+0

はい、できます! :) –

関連する問題