2016-05-11 6 views
2

次はSQLで簡単ですが、Pandasでどのように行うのかわかりません。PandasはDataFrameから複数回値を追加します

私の入力は、次のとおりです。

symb fld 
a  field1 
a  field2 
a  field3 
b  field1 
b  field2 
b  field3 
c  field1 
c  field2 
c  field3 

この結果を取得する方法上の任意のアイデア:

import pandas as p  
symb = p.DataFrame(['a', 'b', 'c'], columns=['symb']) 
fld = p.DataFrame(['field1', 'field2', 'field3'], columns=['fld']) 

は、私は出力として、次のデータフレームを取得することができるようにしたいですか?

ありがとうございます!

答えて

2

最初に、同じ値を持つ新しい列を両方ともDataFramesに作成します。そして、それらによってmergeを使用して、dropヘルパーコラム:

symb['one'] = 1 
fld['one'] = 1 
print pd.merge(symb, fld, on='one').drop('one', axis=1) 
    symb  fld 
0 a field1 
1 a field2 
2 a field3 
3 b field1 
4 b field2 
5 b field3 
6 c field1 
7 c field2 
8 c field3 
+0

優れた、ありがとう! – Yona

+0

ちょうど1つのコメント...あなたはこれがどのように呼び出されるのか知っていますか?私はこの操作がどのように定義されているのか分からなかったので、これを行う方法をGoogleにもできませんでした(結合、結合、その他は一般的な手順を示すページにリンクします)。これは将来のユーザーがこのページを見つけるのに役立ちます。 – Yona

+1

私はそれが 'デカルト製品'または 'クロスジョイント 'と呼ばれていると思います – jezrael

1

ソリューション

pd.DataFrame(index=symb.symb, columns=fld.fld).fillna(0).stack().reset_index()[['symb', 'fld']] 
+0

このコードは質問に答えるかもしれませんが、このコードが質問に答える理由および/または方法に関する追加の文脈を提供することで、 – Ajean

関連する問題