【问题标题】:apply a function to a row with condition将函数应用于具有条件的行
【发布时间】:2016-03-16 18:14:16
【问题描述】:
我得到了这个数据框
x1 x2 x3
1 2.5 2.8 1.4
2 2.1 1.9 2.3
3 1.7 2.2 4.4
4 2.4 3.8 3.7
5 4.3 4.4 4.1
6 4.2 4.9 2.4
7 2.7 1.5 2.5
8 2.8 3.3 4.9
9 3.5 2.3 2.9
10 4.1 2.8 2.2
所以我需要检查每一行的条件并对这一行应用一个函数,以便该函数的值位于第四列或外部向量中。即如果 min_value_of_row
如何做到这一点?
【问题讨论】:
标签:
row
conditional-statements
【解决方案1】:
有点晚了,但我正在寻找类似的东西。首先,我将创建两列,每行的 min 和 mean 值:
df['min'] = df.min(axis=1)
和
df['mean'] = df.mean(axis=1)
然后构建一个函数:
def f(x):
thr = 2
if x['min'] <= thr:
x = x['min']
else:
x = x['mean']
return x
并将其逐行应用于数据框(axis=1):
df['value'] = df.apply(f, axis=1)
返回:
x1 x2 x3 value
1 2.5 2.8 1.4 1.400
2 2.1 1.9 2.3 1.900
3 1.7 2.2 4.4 1.700
4 2.4 3.8 3.7 3.075
5 4.3 4.4 4.1 4.225
6 4.2 4.9 2.4 3.475
7 2.7 1.5 2.5 1.500
8 2.8 3.3 4.9 3.450
9 3.5 2.3 2.9 2.750
10 4.1 2.8 2.2 2.825