按系列划分 DataFrame 中的列(结果仅为 NaNs?)
Divide columns in a DataFrame by a Series (result is only NaNs?)
我正在尝试做与此问题中发布的内容类似的事情:
我有一个 n x m 数据帧,所有非零浮点值,和一个 1 x m 列,所有非零浮点值,我试图将 n x m 数据帧中的每一列除以中的值专栏。
所以我有:
a b c
1 2 3
4 5 6
7 8 9
和
x
11
12
13
我正在寻找 return:
a b c
1/11 2/11 3/11
4/12 5/12 6/12
7/13 8/13 9/13
我先尝试了一个乘法运算,看看我是否可以让它工作,所以我尝试应用上面问题的答案中给出的两个解决方案。
df_prod = pd.DataFrame({c:df[c]* df_1[c].ix[0] for c in df.columns})
这会产生一个 "Key Error 0"
并使用其他解决方案:
df.mul(df_1.iloc[0])
虽然形状正确,但我得到的都是 NaN。
NaN 的原因是您的索引未对齐。要克服这个问题,您要么需要除以 numpy 数组,
# <=0.23
df.values / df2[['x']].values # or df2.values assuming there's only 1 column
# 0.24+
df.to_numpy() / df[['x']].to_numpy()
array([[0.09090909, 0.18181818, 0.27272727],
[0.33333333, 0.41666667, 0.5 ],
[0.53846154, 0.61538462, 0.69230769]])
或使用.div
执行轴对齐除法:
df.div(df2['x'], axis=0)
a b c
0 0.090909 0.181818 0.272727
1 0.333333 0.416667 0.500000
2 0.538462 0.615385 0.692308
我正在尝试做与此问题中发布的内容类似的事情:
我有一个 n x m 数据帧,所有非零浮点值,和一个 1 x m 列,所有非零浮点值,我试图将 n x m 数据帧中的每一列除以中的值专栏。
所以我有:
a b c
1 2 3
4 5 6
7 8 9
和
x
11
12
13
我正在寻找 return:
a b c
1/11 2/11 3/11
4/12 5/12 6/12
7/13 8/13 9/13
我先尝试了一个乘法运算,看看我是否可以让它工作,所以我尝试应用上面问题的答案中给出的两个解决方案。
df_prod = pd.DataFrame({c:df[c]* df_1[c].ix[0] for c in df.columns})
这会产生一个 "Key Error 0" 并使用其他解决方案:
df.mul(df_1.iloc[0])
虽然形状正确,但我得到的都是 NaN。
NaN 的原因是您的索引未对齐。要克服这个问题,您要么需要除以 numpy 数组,
# <=0.23
df.values / df2[['x']].values # or df2.values assuming there's only 1 column
# 0.24+
df.to_numpy() / df[['x']].to_numpy()
array([[0.09090909, 0.18181818, 0.27272727],
[0.33333333, 0.41666667, 0.5 ],
[0.53846154, 0.61538462, 0.69230769]])
或使用.div
执行轴对齐除法:
df.div(df2['x'], axis=0)
a b c
0 0.090909 0.181818 0.272727
1 0.333333 0.416667 0.500000
2 0.538462 0.615385 0.692308