Pandas 连接Python数据
我有两个不同的Python数据帧(即大小为2*2),如下所示: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 显然,我不能将这两个数据帧相乘(我希望我能做到)。那么,最好的方法是什么呢?这是可以通过连接实现的吗?或者我应该开始
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
。如果它解决了你的问题,如果你愿意,你可以接受答案<编码>快乐编码
。