我有2个Pandas DataFrames看起来像:
DF1:
0 1 2 3
0.001 0.001 0.001 300
0.002 0.002 0.002 270
...
df2:
0 1 2 3
0.001 0.001 0.001 210
0.002 0.002 0.002 220
...
由于第0列,第1列和第2列始终相同,我想用df2.3对df1.3进行转换。 像:
df3 = df1.3 - df2.3
它不起作用,但我认为它显示了我想要实现的目标。
我希望df3看起来像:
0
90
50
...
有什么建议吗?
答案 0 :(得分:1)
Literal substances.id
不是Python中的有效标识符,因此它不能是DataFrame属性。您需要明确访问该列,即
3
答案 1 :(得分:0)
这项工作对我来说:
df3 = df1['3'] - df2['3']
替代方案:
df3 = df1['3'].sub(df2['3'])
答案 2 :(得分:0)
pnadas数据帧索引可以是文本或整数或日期。这取决于他们是如何创造的。
如果我读入示例数据,则默认为文本。但是,实际类型可以是整数。
如果列名是文本,那么这将起作用
df1['3'] - df1['2']
如果他们是整数,那么这将改为
df1[3] - df2[2]
如果您想纯粹根据数据框中列的位置获得差异,请使用iloc
df1.iloc[:,3] - df2.iloc[:, 2]
查看列元素的类型使用
df1.columns
它应输出
# 1: Int64Index([0, 1, 2, 3], dtype='int64')
# 2: Index(['0', '1', '2', '3'], dtype='object')
使用适合您的列名类型的列选择技术。