对 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
我知道如何进行数学运算,以及如何使用 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
关于python - 迭代数据框中的行,对每行执行计算并将答案放入新列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48449888/