python - 将数据框行分配给变量
问题描述
我有一个 df,其中按日期索引并且有很多列。我在函数内的特定日期处理一行,然后我将遍历不同的日期,一次选择一行进行修改。
该行有很多计算,我发现使用
df.loc[current_date, 'select_columns']` #messy.
我将整行更改为:
r = pd.Series (df.loc[current_date, :])
这种方式可以与说:
r[field_name]
我可以通过这种方法查看和更新数据,然后在计算完成后将系列重新分配给 df 行。
虽然这确实有效,但我的问题是......是否有更好的 Pythonic 方式来访问数据框中的一行以进行许多计算?
解决方案
IIUC,您正在尝试找到一种迭代行并从每一行获取某些值的好方法。iterrows
您可以使用和检索值遍历行,如您所提到的:
for ix, row in df.iterrows():
row[field_names]
...
如果您有兴趣为数据框设置值,row[field_names] = val
将无法正常工作。这个相关的帖子可能很有趣。通常,您必须使用“一次操作”(例如df.loc[row, col] = value
)来设置值。链式操作不会影响原始数据帧。那就是df.loc[row, :][col]
不会影响原来的df
。row{field_names] = val
出于同样的原因,与我给出的示例相同。
推荐阅读
- python - pycharm没有输出
- excel - 如何将增长平均分配到每个月?
- compilation - ö 在 Latex 中 - 奇怪的符号
- c# - 如何下载 2 个或更多文件
- php - 为什么会触发这个“if”语句?
- c# - 网络流收到后如何将值返回给不同的类c#(消息聊天)
- firebase - 会话持续时间 - 谷歌分析和 Firebase 报告之间的巨大差异
- python - SyntaxError:扫描字符串文字时 EOL
- python - 在for循环中反转字符串
- ruby-on-rails - 如何在 ruby on rails 中使用 rake 任务对电子邮件传递进行排队?