Python 迭代数据帧中的行,对每个行执行计算,并将答案放入新列中
对python有些陌生。实际上,我感兴趣的是迭代数据帧中的行,如果满足条件,则对特定列执行计算,然后将答案放在新列的同一行上 例如,如果我有一个数据帧:Python 迭代数据帧中的行,对每个行执行计算,并将答案放入新列中,python,pandas,dataframe,Python,Pandas,Dataframe,对python有些陌生。实际上,我感兴趣的是迭代数据帧中的行,如果满足条件,则对特定列执行计算,然后将答案放在新列的同一行上 例如,如果我有一个数据帧: c1 c2 0 20 82 1 15 14 2 10 19 如果c2中的值大于50,我可能希望将c1中的值减半,如果c2中的值小于50,则将c1中的值翻倍,并将答案显示在新列c3中,因此我将以: c1 c2 c3 0 20 82 10 1 15 14 30 2 10 19 20 我知道如何做
c1 c2
0 20 82
1 15 14
2 10 19
如果c2中的值大于50,我可能希望将c1中的值减半,如果c2中的值小于50,则将c1中的值翻倍,并将答案显示在新列c3中,因此我将以:
c1 c2 c3
0 20 82 10
1 15 14 30
2 10 19 20
我知道如何做数学运算,以及如何使用if/else函数,它只是在我正在努力处理的行上迭代,以及如何将每个答案放入新的列中。我知道iterrows,但我不确定我是否完全理解如何使用它,或者它在本例中是否合适
干杯。直接的方法是将其分配给同一数据帧内的新列。如果名称存在,将替换列。除此之外,它是附加的
In [2]: df = pd.DataFrame({'c1':[20,15,10],'c2':[82,14,19]})
In [3]: df
Out[3]:
c1 c2
0 20 82
1 15 14
2 10 19
In [6]: df['c3'] = df['c1'] + df['c2']
In [7]: df
Out[7]:
c1 c2 c3
0 20 82 102
1 15 14 29
2 10 19 29
In [8]: df['c4'] = 10
In [9]: df
Out[9]:
c1 c2 c3 c4
0 20 82 102 10
1 15 14 29 10
2 10 19 29 10
可以使用匿名函数实现if-else:
In [13]: df['c5'] = df['c2'].apply(lambda x: x if x > 50 else 'nope')
In [14]: df
Out[14]:
c1 c2 c3 c4 c5
0 20 82 102 10 82
1 15 14 29 10 nope
2 10 19 29 10 nope
输出:
c1 c2 c3
0 20 82 10.0
1 15 14 30.0
2 10 19 20.0
解释
np.其中(df['c2']>50,df['c1']*0.5,df['c1']*2)
:
df['c2']>50
)是我们正在检查的条件(在本例中,将c2
列与50进行比较,如您在问题中所述)df['c1']*0.5
)是我们在条件为True
的情况下计算的值df['c1']*2
)是我们为条件为False
的情况计算的值 c1 c2 c3
0 20 82 10.0
1 15 14 30.0
2 10 19 20.0