Python pandas:合并两个没有键的表(将 2 个数据帧与广播所有元素相乘;NxN 数据帧)
Posted
技术标签:
【中文标题】Python pandas:合并两个没有键的表(将 2 个数据帧与广播所有元素相乘;NxN 数据帧)【英文标题】:Python pandas : Merge two tables without keys (Multiply 2 dataframes with broadcasting all elements; NxN dataframe) 【发布时间】:2016-05-16 00:17:49 【问题描述】:我想合并 2 个具有广播关系的数据帧: 没有公共索引,只想找到 2 个数据框中的所有行对。 所以想要制作 N 行数据框 x M 行数据框 = N*M 行数据框。 是否有任何规则可以在不使用 itertool 的情况下实现这一点?
DF1=
id quantity
0 1 20
1 2 23
DF2=
name part
0 'A' 3
1 'B' 4
2 'C' 5
DF_merged=
id quantity name part
0 1 20 'A' 3
1 1 20 'B' 4
2 1 20 'C' 5
3 2 23 'A' 3
4 2 23 'B' 4
5 2 23 'C' 5
【问题讨论】:
用简单的cross-join
回答是here
【参考方案1】:
您可以在此列的DataFrames
和merge
中使用tmp
填充的辅助列1
。最后你可以drop
它:
DF1['tmp'] = 1
DF2['tmp'] = 1
print DF1
id quantity tmp
0 1 20 1
1 2 23 1
print DF2
name part tmp
0 'A' 3 1
1 'B' 4 1
2 'C' 5 1
DF = pd.merge(DF1, DF2, on=['tmp'])
print DF
id quantity tmp name part
0 1 20 1 'A' 3
1 1 20 1 'B' 4
2 1 20 1 'C' 5
3 2 23 1 'A' 3
4 2 23 1 'B' 4
5 2 23 1 'C' 5
print DF.drop('tmp', axis=1)
id quantity name part
0 1 20 'A' 3
1 1 20 'B' 4
2 1 20 'C' 5
3 2 23 'A' 3
4 2 23 'B' 4
5 2 23 'C' 5
【讨论】:
以上是关于Python pandas:合并两个没有键的表(将 2 个数据帧与广播所有元素相乘;NxN 数据帧)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Python Pandas 合并多个 CSV 文件