在不合并的情况下,按键将数据框的所有列除以较小的列
Divide all columns of a dataframe by a smaller one by key without merging
我知道这是一个问得很好的问题,但我搜索了很长时间,找不到答案。
我有这样的数据集:
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]
})
您可以使用 set_index
:
df2.set_index('ID.').div(df1.set_index('ID.')['denominator'], axis=0)
我知道这是一个问得很好的问题,但我搜索了很长时间,找不到答案。
我有这样的数据集:
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]
})
您可以使用 set_index
:
df2.set_index('ID.').div(df1.set_index('ID.')['denominator'], axis=0)