Pandas 连接Python数据

Pandas 连接Python数据,pandas,dataframe,concatenation,Pandas,Dataframe,Concatenation,我有两个不同的Python数据帧(即大小为2*2),如下所示: Mangoes Apples Mangoes Apples Mangoes 0 0 Apples 以及 Mangoes 0 0 Apples 我打算生成第三个数据帧,以便输出可以是: Mangoes 0 0 Apples 显然,我不能将这两个数据帧相乘(我希望我能做到)。那么,最好的方法是什么呢?这是可以通过连接实现的吗?或者我应该开始

我有两个不同的Python数据帧(即大小为2*2),如下所示:

Mangoes    Apples
Mangoes    Apples
Mangoes       0
0        Apples
以及

Mangoes       0
0        Apples
我打算生成第三个数据帧,以便输出可以是:

Mangoes       0
0        Apples

显然,我不能将这两个数据帧相乘(我希望我能做到)。那么,最好的方法是什么呢?这是可以通过连接实现的吗?或者我应该开始逐项迭代每个数据帧,并将值存储到第三个数据帧中

假设两个DFs具有相同的列名和索引:

Mangoes       0
0        Apples
In [123]: d1[d2.eq(1)].combine_first(d2)
Out[123]:
         0       1
0  Mangoes       0
1        0  Apples
来源DFs:

Mangoes       0
0        Apples
d1:

Mangoes       0
0        Apples
d2:

Mangoes       0
0        Apples

一种可能的方法如下:

Mangoes       0
0        Apples
print(df1)
输出:

Mangoes       0
0        Apples
         0       1
0  Mangoes  Apples
1  Mangoes  Apples
   0  1
0  1  0
1  0  1
         0       1
0  Mangoes       0
1        0  Apples
其他
数据帧

Mangoes       0
0        Apples
print(df2)
输出:

Mangoes       0
0        Apples
         0       1
0  Mangoes  Apples
1  Mangoes  Apples
   0  1
0  1  0
1  0  1
         0       1
0  Mangoes       0
1        0  Apples
然后:

Mangoes       0
0        Apples
输出:

Mangoes       0
0        Apples
         0       1
0  Mangoes  Apples
1  Mangoes  Apples
   0  1
0  1  0
1  0  1
         0       1
0  Mangoes       0
1        0  Apples

谢谢你的指导。我尝试过使用这种方法,但得到一个错误,“TypeError:不能将序列乘以'str'类型的非整数”。@John可能的原因是
df2
的数据类型不是
integer
float
,而是
string
。因此,错误在于尝试将两个
字符串相乘。您能否验证上述示例中
df2
数据类型
?您可以尝试通过
df2=df2将整个
df2
转换为数字。应用(pd.to_numeric)
并查看
df_new=(df1*df2)。替换(“”,0)
是否有效。要进行简单的测试,您可以尝试运行
'mangoes'*1
,并与
'mangoes'*'1'
进行比较。后者可能会给出与您提到的相同的错误。是的,这是数据类型d2的问题。。。问题解决了。顺便问一下,你能不能详细说明一下这句话。。。df_new=(df1*df2)。替换(“”,0)。。。这('',0)到底是什么doing@John如果从代码行中删除
.replace(“”,0)
,则您将看到空单元格,即,为了进行简单测试,您可以尝试:
'mangoes'*0
将给出
'
。因此,将这些空单元格替换为
0
。如果它解决了你的问题,如果你愿意,你可以接受答案<编码>快乐编码