python - 如何在不使用列名的情况下操作数据框的值
问题描述
我有一个数据框,其中包含如下列:
MultiIndex([('Longitude', 'Field1'),
('Latitude', 'Field1'),
('Name with Name Text', 'Field1'),
('Name with Name Text', 'Field2'),
('IsPresent', 'Field1')],)
一个 csv 的例子是
我想遍历数据中的每一行,并且对于我想替换某些字符(如果存在)的字段的每个值。例如,将“X”替换为“Y”。但我不想依赖列名,因为它可以更改。我想遍历每个值并剥离字符。下面的迭代有字段名称,所以不能使用它。
for i, j in df1.iterrows():
print(j['Name with Name Text']['Field1'])
这个问题的答案是在逐行迭代时更新熊猫中的数据框,但这取决于列名。我想要一个只依赖于值而不是基于列名的解决方案。
解决方案
这里,j
是一个系列。因此,您可以使用 轻松导航到您喜欢的列iloc
。你甚至不需要关心你是否使用过 MultiIndex。因此,
for i, j in df1.iterrows():
print(j['Name with Name Text']['Field1'])
相当于
for i, j in df1.iterrows():
print(j.iloc[2])
2
在这里使用是因为它是第三列。
编辑:如果你想遍历每一列:
for i, j in df1.iterrows():
for k in range(len(df1.columns)):
print(j.iloc[k])
推荐阅读
- reactjs - 无法将 MERN 部署到 heroku
- angular - 构建期间来自 Terser 的运行时错误 --prod
- c# - Entity Framework Core 零或一到零或一关系
- django - 芹菜间隔计划不会在给定的间隔内执行
- mysql - 根据多表条件从表中删除条目
- javascript - 错误:ENOENT:没有这样的文件或目录,uv_chdir 在 process.chdir 创建目录并更改为它时
- c++ - 如何以字节或其他方式转换/显示数据类型?就像 MemoryViewer 中的调试器一样
- javascript - node.js 中自定义事件发射器的目的是什么?
- firebase - 如何引用json响应的多个孩子的孩子
- firebase - 在带有 redux 的 react-native 中使用 firebase orderByChild 时出现未指定的警告