首页 > 解决方案 > 熊猫数据框:划分和替换

问题描述

背景

我正在使用 JupyterLab 和 Anaconda。

我有 2 个类似的数据框。我想将一个数据帧的(部分/子集)除以(部分/子集),然后更新原始数据帧。以下是我编写的代码:

编写的代码

def f_test_df(n_rows, n_cols):
    df_local = pd.DataFrame(np.random.rand(n_rows, n_cols))
    df = df_local.applymap(lambda x: round(x*10))
    return df 

np.random.seed(seed=1)

df1 = f_test_df(4, 4)
df1.rename(columns={0:'test'}, inplace=True)
df2 = f_test_df(4, 4)
df2.rename(columns={0:'test'}, inplace=True)
df_div = df1.iloc[:, 1:].div(df2.iloc[:, 1:])
minimum_value = 2
display(df1)

df1

display(df2)

df2

display(df_div)

df_div

df1.iloc[:, 1:].replace(df_div, inplace=True)
df1

df1 更新 - df1 没有变化,即使在更新之后

期望的结果

我希望 df1 由获得的部门(df_div)更新。从输出中可以看出,df1 没有得到更新。我应该如何纠正分割过程?

标签: pythonpandas

解决方案


我认为最简单的是指派回来:

df1.iloc[:, 1:]  = df1.iloc[:, 1:].div(df2.iloc[:, 1:])

print(df1)
   test         1         2         3
0     4  1.166667  0.000000  1.500000
1     1  0.100000  0.666667  0.428571
2     4  0.555556  4.000000       inf
3     2  1.000000  0.000000  1.750000

推荐阅读