我想在熊猫中做与MYSQL笛卡儿产品相同的操作
例如,表a
和b
具有相同的列名"Price"
,我想将名称更改为"a.Price"
和"b,Price"
并阻止这两个{{1}合并为一列的属性。
但是,pandas merge只能在其共享列上合并两个DataFrame:
"Price"
结果是这样的,但我想重命名这两个dfa = pd.DataFrame({'price': [30,40],
'discount': ['0.1', '0.2']})
dfb = pd.DataFrame({'price': [100,120],
'title': ['abc', 'xyz']})
df_result = pd.merge(dfa,dfb,how="outer")
discount price title
0 0.1 30 NaN
1 0.2 40 NaN
2 NaN 100 abc
3 NaN 120 xyz
属性并将它们分成两列。 我看到其他答案建议手动为每个DataFrame添加相同的键,但是当我有几个大型DataFrame(超过2个)时,我想知道如何解决这个问题。
答案 0 :(得分:0)
我不太清楚你为什么要这样做,但你可以为每一列添加一个前缀:
In [11]: dfa.add_prefix("a_")
Out[11]:
a_discount a_price
0 0.1 30
1 0.2 40
我会使用concat
而不是merge
:
In [12]: pd.concat([dfa.add_prefix("a_"), dfb.add_prefix("b_")])
Out[12]:
a_discount a_price b_price b_title
0 0.1 30.0 NaN NaN
1 0.2 40.0 NaN NaN
0 NaN NaN 100.0 abc
1 NaN NaN 120.0 xyz
要做两个以上,将更多内容传递到列表中:
pd.concat([dfa.add_prefix("a_"), dfb.add_prefix("b_"), dfc.add_prefix("c_")])