【发布时间】:2018-05-14 06:08:04
【问题描述】:
我有两个具有完全相同列数和行数的 pandas 数据帧(df1 和 df2)。 (列和索引名称也相同)这两个数据框中的值可能不同,也可能不同。
我想将 df1 中的每个值与 df2 中相应位置的值进行比较,如果 df2 中的值等于或大于 df1 中的值,我想用随机整数替换 df1 中的值。
所以我想我会想要这样的东西(但最好不要有任何循环)
for every value in df1
df1.value - df2.value
if df1.value < 1
df1.value = np.random()
我尝试将 pandas df.replace 函数与 df.where 函数结合使用,但我似乎无法让它发挥作用。
编辑:我想添加一些我之前忘记的东西。 在分配我的随机 int 时,我希望它在基于我的相应值的范围内。所以它会是:
for every value in df1
df1.value - df2.value
if df1.value < 1
df1.value = np.random( in range (df1.value -10, df.value +10)
我相信 Pietro Tortella 的答案不可能做到这一点,因为我正在处理整个数据框。
有人知道怎么解决吗?
【问题讨论】:
-
In 可以基于 df1 构建一个新的数据框,按照我想要的方式转换值,然后将其用作替换。