如何通过应用函数在两列中交换值?

时间:2019-05-08 13:54:08

标签: python python-3.x

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

我要应用的功能:

BindingsEndpoint

应用:

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')

4 个答案:

答案 0 :(得分:1)

这是一种索引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

答案 1 :(得分:0)

首先,我假设您正在使用Python软件包Pandas?

如果是,则apply函数返回结果。如果您希望看到任何效果,则可能希望将此结果保存在原始列中。示例:

eventRender: function(info) {
  info.el.querySelector('.fc-title').innerHTML = "<i>" + info.event.title + "</i>";
}

答案 2 :(得分:0)

df['diff'] = df['tmin'] - df['tmax]
df = df[df['diff']>= 0]

答案 3 :(得分:0)

您可以使用GRAPHLAB模块处理数据集中的列

import graphlab as gl
data=gl.SFrame('demo.csv')
data
if data['age'].all() > 0:
    data['temp'] = data['age']
    data['age'] = data['weight']
    data['weight'] = data['temp']
    data['temp'] = 1
data

我上面使用GRAPHLAB MODULE REFER THIS IMAGE , TO KNOW ABOUT ABOUT THE CODE处理表的代码