python - 在 Pandas DataFrame 上循环
问题描述
我想在 pandas DataFrame 的行上运行一个循环,以便基于列中的索引,a
我b
可以对列中给出的值求和,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 条件,但这会使我的代码不那么优雅。提前感谢您的建议!
解决方案
您可以使用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
推荐阅读
- javascript - 在单击项目时添加类
- android - 用户关闭支付浏览器怎么办?
- ruby-on-rails - 如何为两个字段添加 ruby on rails 模型验证?
- ios - 有没有办法从 MacBook Pro 2011 向 AppStore 提交应用程序?
- kotlin - 如何将 Flow 转换为 Flowable?
- model-view-controller - 将 pagedList.Mvc 包添加到我的项目后出现错误
- javascript - 平板电脑的浏览器关闭确认
- java - 如何将多个数据库列值存储在 Java 中的单个列表中
- reactjs - 在 Reactjs 中更新兄弟事件的开始、结束和持续时间的正确方法
- html - 如何扩展 Angular 表单指令以使全局自动完成 =“关闭”