Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 按键将数据帧的所有列除以较小的列,而不合并_Python 3.x_Pandas_Division - Fatal编程技术网

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
,因为索引和列完全不同。