2015-09-07 7 views
6

मैं दो पांडा dataframes है, और मैं इस तरह प्रत्येक पहले dataframe पंक्ति के साथ एक दूसरे dataframe पंक्ति गठबंधन करने के लिए करना चाहते हैं:पांडा dataframe कार्तीय में शामिल होने

पहले:

val1 val2 
1 2 
0 0 
2 1 

दूसरा:

l1 l2 
a a 
b c 

परिणाम (अपेक्षित परिणाम आकार = लेन (पहला) * लेन (दूसरा)):

val1 val2 l1 l2 
1 2 a a 
1 2 b c 
0 0 a a 
0 0 b c 
2 1 a a 
2 1 b b 

उनके पास कोई ही सूचकांक नहीं है।

सादर, Secau

उत्तर

5

एक किराए कुंजी बनाएँ कार्तीय उन दोनों के बीच में शामिल होने के ऐसा करने के लिए ...

import pandas as pd 

df1 = pd.DataFrame({'A': [1, 0, 2], 
        'B': [2, 0, 1], 
        'tmp': 1}) 

df2 = pd.DataFrame({'l1': ['a', 'b'], 
        'l2': ['a', 'c'], 
        'tmp': 1}) 

print pd.merge(df1, df2, on='tmp', how='outer') 

परिणाम:

A B tmp l1 l2 
0 1 2 1 a a 
1 1 2 1 b c 
2 0 0 1 a a 
3 0 0 1 b c 
4 2 1 1 a a 
5 2 1 1 b c 
0

यहाँ एक वैकल्पिक समाधान है:

import pandas as pd 

df1 = pd.DataFrame({'val1': [1,0,2], 'val2': [2,0,1]) 
df2 = pd.DataFrame({'l1': ['a', 'b'], 'l2': ['a', 'c']) 
df_list = [] 

for x in df1.index: 
    series = df1.iloc[x, :] 
    series_list = [series for _ in range(len(df2.index))] 
    temp_df = pd.DataFrame(series_list, index=range(len(df2.index))) 
    df_list.append(pd.concat((temp_df, df2), axis=1, join='inner')) 

final_df = pd.concat(df_list) 

जो उत्पादित करता है:

final_df 
    val1 val2 l1 l2 
0  1  2 a a 
1  1  2 b c 
0  0  0 a a 
1  0  0 b c 
0  2  1 a a 
1  2  1 b c