Pandas中iloc函数的用例是什么?

时间:2017-08-14 13:17:02

标签: python pandas

在以下代码中,有两个标记相同的数据框(recent_gradsall_ages):

majors = recent_grads['Major'].unique()
rg_lower_count = 0
for m in majors:
    recent_grads_row = recent_grads[recent_grads['Major'] == m]
    all_ages_row = all_ages[all_ages['Major'] == m]

    rg_unemp_rate = recent_grads_row.iloc[0]['Unemployment_rate']
    aa_unemp_rate = all_ages_row.iloc[0]['Unemployment_rate']

    if rg_unemp_rate < aa_unemp_rate:
        rg_lower_count += 1

print(rg_lower_count)

为什么我需要iloc[0]部分(第7行和第8行)?由于每个系列只有一行(最近的grads行和所有年龄行),因此无需指定我想要执行比较的行。 然而,没有它,我收到此错误消息:

ValueError: Can only compare identically-labeled Series objects

1 个答案:

答案 0 :(得分:0)

使用iloc意味着无论索引值如何,您都将始终获得数据框中的第一行;然后,您将获得其中一个列名称,因此您最终会得到每个数据帧的单个标量值。但是,如果您只是比较两个数据帧(或在这种情况下从其列中获得的两个系列),则只有两者具有完全相同的索引标签时才能进行比较。

要了解我的意思,如果您打印recent_grads_row.index[0]all_ages_row.index[0],您会看到不同的值。另一种选择是用户reset_index在两个数据框或类似的东西上,但只是选择第一行似乎更简单。