我已经多次重写这个问题,因为我认为我已经解决了这个问题,但似乎没有。我目前正在尝试循环遍历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具有以下结构:
我的df2结构:
我正在创建我的df3:
df3 = pd.DataFrame(index = df1.index, columns=tickers.index)
看起来像(人口之前):
唯一可能的问题是df3中的多指数可能吗?苦苦挣扎,看看为什么他们不分裂。
答案 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
确保df1
和df2
中的行数和列数相同,如果划分数据框的np.array
对应部分,这将变得很容易。
v = df1.values / df2.values
df3 = pd.DataFrame(v, index=df1.index, columns=tickers.index)