Python 如何在不首先转换为numpy的情况下将一个数据帧除以另一个数据帧?

Python 如何在不首先转换为numpy的情况下将一个数据帧除以另一个数据帧?,python,pandas,numpy,Python,Pandas,Numpy,我有一个数据框,有两列,x和y,还有几百行。 我有另一个数据帧,只有一行两列,x和y 我想用大数据框的x列除以小数据框的x中的值,用y列除以y列 如果我把一个数据帧除以另一个,我得到所有的NaN。为了使分区工作,我必须将小数据帧转换为numpy 为什么我不能将一个数据帧除以另一个?我错过了什么?下面我有一个玩具的例子 import numpy as np import pandas as pd df = pd.DataFrame() r = int(10) df['x'] = np.arang

我有一个数据框,有两列,x和y,还有几百行。 我有另一个数据帧,只有一行两列,x和y

我想用大数据框的x列除以小数据框的x中的值,用y列除以y列

如果我把一个数据帧除以另一个,我得到所有的NaN。为了使分区工作,我必须将小数据帧转换为numpy

为什么我不能将一个数据帧除以另一个?我错过了什么?下面我有一个玩具的例子

import numpy as np
import pandas as pd

df = pd.DataFrame()
r = int(10)
df['x'] = np.arange(0,r)
df['y'] = df['x'] * 2

other_df = pd.DataFrame()
other_df['x'] = [100]
other_df['y'] = [400]

# This doesn't work - I get all nans
new = df / other_df

# this works - it gives me what I want
new2 = df / [100,400]

# this also works
new3 = df / other_df.to_numpy()

您可以将一行
数据帧
转换为
系列
,以便正确对齐
,例如,通过以下方式选择第一行:


您可以使用
numpy.divide()
进行分割,因为
numpy
具有一个很好的属性,即广播

new = np.divide(df,other_df)

有关详细信息,请查看此项。

谢谢,但这是为什么?为什么pandas不喜欢除以1x2数据帧,而喜欢除以一个列表、一个numpy数组或一个系列?@Pythonistaanonymous-因为对齐-这意味着如果要除以2个数据帧,pandas会尝试在两者之间对齐索引和列值,然后进行分割。所以这里只匹配第一行,因为这里是两个数据帧中第一个索引值
0
的交点。此外,列名称相同,因此没有问题。如果转换为系列,则系列索引和列名称之间只有对齐,此处
x,y
不是精确的dup,但这应该非常有用,非常有用,谢谢!公平地说,这是因为numpy和pandas区分了(1x2)数组(被认为是二维的)和具有2个元素的一维数组吗?是的<代码>[1,2]不同于
[[1,2]]
new = np.divide(df,other_df)