2017-03-28 9 views

答えて

4

あなたが使用することができitertools:あなたはリストに変換する必要があるので、

import itertools as it 

pd.DataFrame(list(it.product(df1[0], df2[0]))) 
    0   1 
0 A1 2016-01-01 
1 A1 2016-01-02 
2 A2 2016-01-01 
3 A2 2016-01-02 

itertoolsは、データフレーム

にそれを変換する前に、発電機を返します。

it.productは、2つのiterableオブジェクト間のすべての組み合わせを作成します。例:

["".join(i) for i in it.product("ABC", "ABC")] 
['AA', 'AB', 'AC', 'BA', 'BB', 'BC', 'CA', 'CB', 'CC'] 
+0

私はちょうど "デカルト製品"と呼ばれるこの製品を知って、感謝! – Arthur

2

pandas.concatを使用してデータフレームを拡張し、それをマージする必要があります。

import pandas as pd 
# test data 
df1 = pd.DataFrame(['A1','A2']) 
df2 = pd.DataFrame(pd.date_range('2016-01-01',periods = 2, freq = '1D')) 

# expand dataframes to cover all varinats and get the same lengths 
df3 = pd.concat([df1]*len(df2), ignore_index=True) 
df4 = pd.concat([df2]*len(df2), ignore_index=True) 

# final concat to merge dataframes 
print (pd.concat([df3,df4],axis=1, ignore_index=True)) 

出力:

0   1 
0 A1 2016-01-01 
1 A2 2016-01-02 
2 A1 2016-01-01 
3 A2 2016-01-02 
関連する問題