Python 3.x 按键将数据帧的所有列除以较小的列,而不合并
我知道这是一个被问得很好的问题,但我一直在寻找答案 我有这样一个数据集:Python 3.x 按键将数据帧的所有列除以较小的列,而不合并,python-3.x,pandas,division,Python 3.x,Pandas,Division,我知道这是一个被问得很好的问题,但我一直在寻找答案 我有这样一个数据集: ID. denominator A 2 B 4 C 5 ID. Value1. Value2. Value3. Value4 ... A 2. 1. 4 8. ... B 4 2 6 0 ... C 5. 5 7 7
ID. denominator
A 2
B 4
C 5
ID. Value1. Value2. Value3. Value4 ...
A 2. 1. 4 8. ...
B 4 2 6 0 ...
C 5. 5 7 7 ...
还有一个是这样的:
ID. denominator
A 2
B 4
C 5
ID. Value1. Value2. Value3. Value4 ...
A 2. 1. 4 8. ...
B 4 2 6 0 ...
C 5. 5 7 7 ...
我想根据ID将第一个数据集的所有列除以第二个数据集,并用这个除法的答案替换第二个数据集上的值
而且,数据集很大,所以我不想像一些答案那样先合并再分割
数据集:
df1 = pd.DataFrame({
'ID.':list('abc'),
'denominator':[2, 4, 5]
})
df2 = pd.DataFrame({
'ID.':list('abc'),
'var2':[1,0.5,7],
'var3':[7,8,9],
'var1':[1,3,1]
})
您可以使用
设置索引
:
df2.set_index('ID.').div(df1.set_index('ID.')['denominator'], axis=0)
其实这是行不通的。它也会分割“ID”,并且只返回NAN。我用数据集的代码更新了我的问题,这样你们就可以进行测试了。很好,现在它成功了!你能解释一下为什么axis=0做了这个把戏吗?
axis=1
是默认值,它会按行分割<代码>轴=0按列分割。Pandas将为除法对齐索引,因此行操作将给出所有nan
,因为索引和列完全不同。