首页 > 解决方案 > 在 Pandas DataFrame 上循环

问题描述

我想在 pandas DataFrame 的行上运行一个循环,以便基于列中的索引,ab可以对列中给出的值求和,f并可以通过字符串名称将它们标记在单独的列中。

    a   b   c   d   e   f
0   1.0 2.0 0   0   0   2.567483
1   1.0 3.0 -1  0   0   2.567483
2   3.0 1.0 1   0   0   2.567483
3   1.0 2.0 -1  -1  0   2.567483

目前我正在使用 DataFrame 的 if 条件,但这会使我的代码不那么优雅。提前感谢您的建议!

标签: pythonpandasdataframeloopssum

解决方案


您可以使用iterrows()

import pandas as pd

df = pd.DataFrame({'a': [10, 11, 12], 'b': [100, 11, 120], 'f': [100, 110, 120]})

for index, row in df.iterrows():
    if row['a'] == row['b']:
        print(row['f'])

输出:

110

或者您可以使用groupby

import pandas as pd

df = pd.DataFrame({'a': [1.0, 1.0, 3.0, 1.0], 'b': [2.0, 3.0, 1.0, 2.0],
                   'f': [2.567483, 2.567483, 2.567483, 2.567483]})

group_by_a_b = df.groupby(["a", "b"]).f.sum().reset_index()
print(group_by_a_b)

输出:

     a    b         f
0  1.0  2.0  5.134966
1  1.0  3.0  2.567483
2  3.0  1.0  2.567483

推荐阅读