I have 2 data frame, i need to combine like below
This is my Data frame 1
This is my Data frame 2
i want my output as below :
I have 2 data frame, i need to combine like below
This is my Data frame 1
This is my Data frame 2
i want my output as below :
 
    
    index = pd.MultiIndex.from_product(
    [df1['symbol'], df2['symbol']], 
    names=['col1', 'col2'])
pd.DataFrame(index=index).reset_index()
    col1    col2
0   L160    K-AL
1   L160    K-PL
2   L170    K-AL
3   L170    K-PL
4   L180    K-AL
5   L180    K-PL
Edit:
even better now thanks to @Andy L.:
pd.MultiIndex.from_product([df1['symbol'], df2['symbol']], names=['col1', 'col2']) \
    .to_frame(index=False)
 
    
    Assign an artificial key column and merge on it to get all the matches:
df1.assign(key=1).merge(df2.assign(key=1), on='key', suffixes=['_1', '_2']).drop('key', axis=1)
Output
  symbol_1 symbol_2
0     L160     K-AL
1     L160     K-PL
2     L170     K-AL
3     L170     K-PL
4     L180     K-AL
5     L180     K-PL
 
    
    df1 = DataFrame({'key':[1,1,1],'symbol':['L160','L170','L180']})
df2 = DataFrame({'key':[1,1],'symbol':['K-PL','K-AL']})
merge(df1, df2,on='key')[['col1', 'col2']]
Basically its a cartesian product. LINK
OUTPUT
  key symbol_x symbol_y
0    1     L160     K-PL
1    1     L160     K-AL
2    1     L170     K-PL
3    1     L170     K-AL
4    1     L180     K-PL
5    1     L180     K-AL
 
    
    Using Numpy can also work:
import numpy as np
import pandas as pd
df1 = pd.DataFrame(['L160', 'L170', 'L180'],columns=['symbol'])
df2 = pd.DataFrame(['K-AL', 'K-PL'],columns=['symbol'])
np.transpose([np.tile(df1['symbol'], len(df2['symbol'])), np.repeat(df2['symbol'], len(df1['symbol']))])
Or directly in a Pandas dataframe:
pd.DataFrame(np.transpose([np.tile(df1['symbol'], len(df2['symbol'])), np.repeat(df2['symbol'], len(df1['symbol']))]))
