gpt4 book ai didi

python - 难以替换 Pandas 列中的值

转载 作者:行者123 更新时间:2023-11-28 17:25:48 24 4
gpt4 key购买 nike

第一次在这里发帖,对 Python 很陌生,重写 pandas 列中的值有些困难。我有一个包含一些列的数据框(其中包括“Ba Avg”、“Study”、“Latitude”、“Upper Depth”等)。我试图对一些值取平均值并将它们写入名为“Upper Avg”的新列。

开始时,我创建了一个名为“Upper Avg”的新列,并将 df 的索引保存为列表。

接下来,对于来自“Study”1020 的数据框的行,我将它们的“Upper Avg”设为与它们的“Ba Avg”相同。这虽然可能不是很有效,但工作得很好。

接下来我想处理研究 191,但我希望他们的“Upper Avg”是研究中位于同一位置(“Latitude”)且值为 a 的每个“Ba Avg”的平均值, b 或 c 在它们的“ConstraintCol”中。为此,我制作了一组纬度值,然后循环遍历这些值,分别寻找具有该纬度的值(在多项研究中没有重复纬度),并使用这些值创建一个新的 df。然后我对满足称为“范围”的约束的那些进行 df。我将范围索引保存到一个列表中,然后计算我想要的平均值,将值保存为“avg”。

这里的问题是当我尝试将这个值 avg 放入 df 时。我尝试过使用 loc 和使用 replace ,每次它替换时都尝试过,但是当我稍后查看 df 时不保存值。

对于冗长的帖子深表歉意,但不胜感激任何指导!

df['Upper Avg'] = ""
index = df.index.tolist()

for i in index:
if df['Study'][i] == 1020:
df['Upper Avg'][i] = df['Ba Avg'][i]

lats = set(df[df['Study'] == 191]['Latitude'])
for i in lats:
latset = df[df['Latitude'] == i]
constraint = [a,b,c]
ranges = latset[latset['ConstraintCol'].isin(constraint)]
idx = ranges.index.tolist()
avg = ranges['Ba Avg'].sum() / 3
df.loc[idx]['Upper Avg'] = avg

最佳答案

从这里开始。这是 np.where outcome = np.where(条件,true,false)

#df['Upper Avg'] = ""
#index = df.index.tolist()

# for i in index:
# if df['Study'][i] == 1020:
# df['Upper Avg'][i] = df['Ba Avg'][i]

df['Upper Avg'] = np.where(df['Study'] == 1020, df['Ba Avg'], np.nan)


lats = set(df[df['Study'] == 191]['Latitude'])
for i in lats:
latset = df[df['Latitude'] == i]
constraint = [a,b,c]
ranges = latset[latset['ConstraintCol'].isin(constraint)]
idx = ranges.index.tolist()
avg = ranges['Ba Avg'].sum() / 3
df.loc[idx]['Upper Avg'] = avg

关于python - 难以替换 Pandas 列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39195624/

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