gpt4 book ai didi

python - 用函数的结果替换值

转载 作者:行者123 更新时间:2023-12-02 19:06:42 24 4
gpt4 key购买 nike

我有以下数据框表:

df = pd.DataFrame({'A': [0, 1, 0],
'B': [1, 1, 1]},
index=['2020-01-01', '2020-02-01', '2020-03-01'])

我试图实现每个存在 1 的值都将被一个递增的数字替换。我正在寻找类似的东西:

df.replace(1, value=3)

效果很好,但我需要增加数字而不是数字 3(因为我想将其用作 ID)

number += 1

如果我将它们连接在一起,它不起作用(或者至少我无法找到正确的语法)我想获得以下结果:

df = pd.DataFrame({'A': [0, 2, 0],
'B': [1, 3, 4]},
index=['2020-01-01', '2020-02-01', '2020-03-01'])

注意:我无法使用任何依赖于列名或行名规范的命令,因为表有 2600 列和 5000 行。

最佳答案

df.values 副本进行按元素赋值是可行的。

更具体地说,从 1 开始到 1 的数量(含)的 范围 被分配到 1 元素的位置值数组。然后分配的数组被放回到原始数据帧中。

代码

(给定数据)

<强>1。行优先排序(OP想要的)

arr = df.values
mask = (arr > 0)
arr[mask] = range(1, mask.sum() + 1)
for i, col in enumerate(df.columns):
df[col] = arr[:, i]

# Result
print(df)
A B
2020-01-01 0 1
2020-02-01 2 3
2020-03-01 0 4

<强>2。列优先排序(另一种可能性)

arr_tr = df.values.transpose()
mask_tr = (arr_tr > 0)
arr_tr[mask_tr] = range(1, mask_tr.sum() + 1)
for i, col in enumerate(df.columns):
df[col] = arr_tr[i, :]

# Result
print(df)
A B
2020-01-01 0 2
2020-02-01 1 3
2020-03-01 0 4

关于python - 用函数的结果替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64945894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com