以下在SQL上很容易,但我无法弄清楚如何在Pandas上做到这一点。
我的输入是:
import pandas as p
symb = p.DataFrame(['a', 'b', 'c'], columns=['symb'])
fld = p.DataFrame(['field1', 'field2', 'field3'], columns=['fld'])
我希望能够将以下DataFrame作为输出:
symb fld
a field1
a field2
a field3
b field1
b field2
b field3
c field1
c field2
c field3
有关如何获得此结果的任何想法?
谢谢!
答案 0 :(得分: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
答案 1 :(得分:1)
pd.DataFrame(index=symb.symb, columns=fld.fld).fillna(0).stack().reset_index()[['symb', 'fld']]