Cur*_*ent 1 python dataframe pandas
我已经多次重写这个问题,因为我认为我已经解决了这个问题,但似乎没有。我目前正在尝试遍历 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
Run Code Online (Sandbox Code Playgroud)
生成的 df3 是一个仅包含 NaN 的矩阵。
我的 df1 的结构是:
而我的 df2 结构:
我将我的 df3 创建为:
df3 = pd.DataFrame(index = df1.index, columns=tickers.index)
Run Code Online (Sandbox Code Playgroud)
看起来像(在人口之前):
唯一的潜在问题可能是 df3 中的多索引?努力想知道为什么他们不分开。
您当前的方法不起作用的原因是因为您正在划分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
Run Code Online (Sandbox Code Playgroud)
确保您在df1and 中具有相同数量的行和列df2,然后如果您划分np.array数据框的对应项,这应该变得容易。
v = df1.values / df2.values
df3 = pd.DataFrame(v, index=df1.index, columns=tickers.index)
Run Code Online (Sandbox Code Playgroud)