首页 > 解决方案 > 如何在不使用列名的情况下操作数据框的值

问题描述

我有一个数据框,其中包含如下列:

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'])

这个问题的答案是在逐行迭代时更新熊猫中的数据框,但这取决于列名。我想要一个只依赖于值而不是基于列名的解决方案。

标签: pythondataframe

解决方案


这里,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])

推荐阅读