gpt4 book ai didi

python - 将数据帧值与同一行中的特定列进行比较

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:42 25 4
gpt4 key购买 nike

我想将数据帧的所有行中的与同一行中的特定列进行比较。我设法通过迭代所有行来做到这一点,对于较小的数据集它可以正常工作,但随着行数和列数的增加开始引起问题。

我想知道,是否有更有效的方法来使用 pandas 来实现此目的?

我当前的解决方案示例:

data = np.array([['Identifier','N1','N2','N3','N4','mean'],
['Row1',1,2,3,4,2.5],
['Row2',5,4,3,2,3.5],
['Row3',1,5,1,5,3],
['Row4',1,2,3,10,4]
])

df = pd.DataFrame(data=data[1:,1:],
index=data[1:,0],
columns=data[0,1:])
df.head()

结果:

        N1  N2  N3  N4  mean
Row1 1 2 3 4 2.5
Row2 5 4 3 2 3.5
Row3 1 5 1 5 3
Row4 1 2 3 10 4

要将其转换为 bool 数据框,我执行以下操作:

# new dataframe with same structure
df_bools = pd.DataFrame().reindex_like(df)
df_bools["mean"] = df["mean"]

# iterate over row values
for index,row in df.iterrows():
colcnt = 0
for i in row[0:-1]:
df_bools.iloc[df.index.get_loc(index),colcnt] = (i>row["mean"])
colcnt += 1

df_bools.head()

以及期望的结果:

        N1      N2      N3      N4      mean
Row1 False False True True 2.5
Row2 True True False False 3.5
Row3 False True False True 3
Row4 False False False False 4

最佳答案

IIUC

df.iloc[:,:4]=df.iloc[:,:4].gt(df['mean'],0)
df
Out[1015]:
N1 N2 N3 N4 mean
Row1 False False True True 2.5
Row2 True True False False 3.5
Row3 False True False True 3
Row4 False False False False 4

关于python - 将数据帧值与同一行中的特定列进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49479351/

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