gpt4 book ai didi

python - Pandas Dataframe 更新行

转载 作者:行者123 更新时间:2023-12-01 00:01:38 25 4
gpt4 key购买 nike

假设我有一个数据帧 X,以 0 开头,维度为 m x n。我在 pandas.series Y 中有 n 个唯一值(1,2,3,...,n),长度为 m。如何在不使用循环的情况下有效地设置 X 第 i 行的 Y[i] 列(将 0 更改为 1)。特别是对于大的 m 和 n。

For example, for Y = [3,2,1]
X
row 1 2 3
0 0 0 0
1 0 0 0
2 0 0 0

to
row 1 2 3
0 0 0 1
1 0 1 0
2 1 0 0

最佳答案

我不知道你为什么反对 for 循环。这应该相当有效。

for row, col in enumerate(Y):
df.iat[n, col] = 1

您还可以计算索引位置并将其值设置为 1,然后将结果重新调整为矩阵的 m x n 形状。

Y = [3, 2, 1]
n = 5
m = len(Y)
locations = set(row * n + col for row, col in enumerate(Y))
df = pd.DataFrame(
np.array([1 if idx in locations else 0 for idx in range(m * n)]).reshape((m, n))
)
>>> df
0 1 2 3 4
0 0 0 0 1 0
1 0 0 1 0 0
2 0 1 0 0 0

关于python - Pandas Dataframe 更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60310547/

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