【发布时间】:2017-10-27 00:48:11
【问题描述】:
我已经多次重写了这个问题,因为我认为我已经解决了这个问题,但似乎没有。我目前正在尝试遍历 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 是一个仅包含 NaN 的矩阵。
我的 df1 是这样的结构:
还有我的 df2 结构:
我将我的 df3 创建为:
df3 = pd.DataFrame(index = df1.index, columns=tickers.index)
看起来像(在人口之前):
可能唯一的潜在问题是 df3 中的多索引?努力想知道为什么他们不分裂。
【问题讨论】:
-
你试过了吗?
df3[:] = df1.values / df2.values问题是索引未对齐。 -
@cᴏʟᴅsᴘᴇᴇᴅ 我同意。这应该工作
-
@piRSquared 刚刚注意到... df1 有 31 列,df2 有 27 列,df3 又有 31 列。我不确定 OP 希望从哪里获得剩余的那些缺失的 cols。
-
@cᴏʟᴅsᴘᴇᴇᴅ 可以找到最小列长度 np.min([d.shape[0] for d in [df1, df2, df3]])
-
感谢您的回复。我将研究列数,因为它们应该是相同的。在相关说明中, df1.iloc[:, [i]].div(df1.iloc[:, [i]]) 在某些行上给出 NaN 是否有原因? (即相同的数据框被自己划分)。