问题将一个数据帧除以另一个数据帧

时间:2017-10-26 16:25:29

标签: python pandas dataframe

我已经多次重写这个问题,因为我认为我已经解决了这个问题,但似乎没有。我目前正在尝试循环遍历df1和df2的列,将一列与另一列分开以填充新df3的列,但我遇到的问题是我的所有单元格都是NaN。

我的循环代码如下:

#Divide One by the Other. Set up for loop
i = 0
for country in df3.columns:    
    df3[country] = df1.iloc[:, [i]].div(df2.iloc[:, [i]])
    i += 1

得到的df3是一个只有NaNs的矩阵。

我的df1具有以下结构:

enter image description here

我的df2结构:

enter image description here

我正在创建我的df3:

df3 = pd.DataFrame(index = df1.index, columns=tickers.index)

看起来像(人口之前):

enter image description here

唯一可能的问题是df3中的多指数可能吗?苦苦挣扎,看看为什么他们不分裂。

1 个答案:

答案 0 :(得分:2)

您当前的方法不起作用的原因是因为您要划分pd.Series个对象。划分时pandas会自动尝试对齐索引。这是一个例子。

df1

5    0
4    1
3    2
2    3
1    4
dtype: int64

df2

5    0
6    1
7    2
8    3
9    4
dtype: int64

df1 / df2    # you'd expect all 1's in each row, but...

1   NaN
2   NaN
3   NaN
4   NaN
5   NaN
6   NaN
7   NaN
8   NaN
9   NaN
dtype: float64

确保df1df2中的行数和列数相同,如果划分数据框的np.array对应部分,这将变得很容易。

v = df1.values / df2.values
df3 = pd.DataFrame(v, index=df1.index, columns=tickers.index)