python - 迭代数据框中的行,对每行执行计算并将答案放入新列中

标签 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

我知道如何进行数学运算,以及如何使用 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/

相关文章:

Python Twilio 与客户端进行调用

python - 如何使用Python将文件上传到GitLab的WIKI

python - statsmodel 中的 GLM 返回错误

python - 蝗虫 : How to invoke the test through an API

python - Pandas :有条件的groupby

python - 如何运行按列值分组的分析,而不是使用整个数据集

r - 根据给定类型计算连续值

python - 如何在 Pandas 的每一行中插入?

python 3.+,根据数据透视表中的平均价格创建一个新的分类列

python - 删除行值类似于 '[ ]' 的数据框列