さまざまな列を持つデータセットがあります。関数を適用して、最低気温(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
する1つの方法を次に示します。
# 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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加