gpt4 book ai didi

python - 使用条件从索引 1 开始替换数据框中的所有列

转载 作者:行者123 更新时间:2023-12-03 20:46:17 25 4
gpt4 key购买 nike

我想根据第一列在第一列之后替换数据框中的列。假设我们有:

df = {'Z':  ['1', '0', '1', '1', '0'],
'A': ['1', '1', '1', '0', '0'],
'B': ['0', '0', '1', '0', '0'],
'C': ['1', '0', '0', '0', '`1']}

df = pd.DataFrame (df, columns = ['Z','A','B','C'])

df
我想用 1 IF column = Z ELSE 0 替换列.
期望的结果如下:
df2 = {'Z':  ['1', '0', '1', '1', '0'],
'A': ['1', '0', '1', '0', '1'],
'B': ['0', '1', '1', '0', '1'],
'C': ['1', '1', '0', '0', '`0']}

df2 = pd.DataFrame (df2, columns = ['Z','A','B','C'])

df2
问题是我有 60 列(A、B、C、D.....),我希望能够同时完成它们。

最佳答案

使用 numpy broadcasting :

# Z column
z = df.iloc[:, 0].values

# rest of columns
rest = df.iloc[:, 1:].values

# do comparison and set values
df.iloc[:, 1:] = (z[:, None] == rest).astype(int)

print(df)
输出
   Z  A  B  C
0 1 1 0 1
1 0 0 1 1
2 1 1 1 0
3 1 0 0 0
4 0 1 1 0
如果您需要一个新的 DataFrame,请执行以下操作:
z = df.iloc[:, 0].values
rest = df.iloc[:, 1:].values

df2 = pd.DataFrame(data=(z[:, None] == rest).astype(int), columns=df.columns[1:], index=df['Z']).reset_index()
print(df2)
输出
   Z  A  B  C
0 1 1 0 1
1 0 0 1 1
2 1 1 1 0
3 1 0 0 0
4 0 1 1 0

关于python - 使用条件从索引 1 开始替换数据框中的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65412362/

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