gpt4 book ai didi

python - 如何通过应用函数交换两列中的值?

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

我有一个包含多个列的数据集。我想通过应用函数交换最低温度 (tmin) 大于最高温度 (tmax) 的值。

我要申请的功能:

def swap(a,b):
if a >= b:
return b,a
else:
return a,b

应用它:

cam.apply(lambda row: swap(row['tmin'], row['tmax']), axis=1)

当我检查代码是否有效时,我发现它没有改变任何东西cam.query('tmin>tmax')

station       date  year  month  day  rain  tmin  tmax

126 garoua 1954-05-07 1954 5 127 NaN 35.6 33.8

2012 garoua 1959-07-06 1959 7 187 NaN 33.0 31.6

最佳答案

这是在 tmin 大于 tmax 的行上索引数据框并使用 DataFrame.reindex 的一种方法交换两列中的值:

# columns to be used for indexing
cols = ["tmin","tmax"]
#indices where tmin is greater than tmax
ixs = df.tmin.gt(df.tmax)
# Where ixs is True, values are swapped
df.loc[ixs,cols] = df.loc[ixs, cols].reindex(columns=cols[::-1]).values

station date year month day rain tmin tmax
126 garoua 1954-05-07 1954 5 127 NaN 33.8 35.6
2012 garoua 1959-07-06 1959 7 187 NaN 31.6 33.0

或使用 DataFrame.where :

df[cols] = df[cols].where(df.tmin.lt(df.tmax), df[cols[::-1]].values)

station date year month day rain tmin tmax
126 garoua 1954-05-07 1954 5 127 NaN 33.8 35.6
2012 garoua 1959-07-06 1959 7 187 NaN 31.6 33.0

关于python - 如何通过应用函数交换两列中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56042434/

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