将.loc与Pandas数据框一起使用时出现问题

时间:2020-06-13 11:09:39

标签: python pandas

    raw=pd.read_csv('raw_6_12_8_30.csv')
    raw2=raw.loc[raw['spices'].isnull()==False]  # code for deleting 10 values #

    b=[]

    for i in range(len(raw2)):
        if raw2['Status'][i]==0:            # codes didn't run perfectly#
            print(i)

但是当我不使用第2行使用此代码时,它就可以正常工作。

    raw=pd.read_csv('raw_6_12_8_30.csv')
    b=[]

    for i in range(len(raw)):
        if raw['Status'][i]==0:            
            print(i)

我检查了raw2 ['Status]和raw ['Status']中是否没有错误

但是每当我使用pandas.loc时,都会出现错误。

我敢打赌第二行出错,但我不知道为什么?

错误图片在这里 enter image description here

键错误11#是什么#

3 个答案:

答案 0 :(得分:1)

通过索引从数据框中获取值的方法有3种。

  1. loc 从索引中获取带有特定标签的行(或列)。

  2. iloc 获取索引中特定位置的行(或列)(因此它只使用整数)。

  3. ix 通常试图表现得像loc,但是如果索引中不存在标签,则会退回到iloc的行为。

如果要通过索引获取值,则可以使用iloc。就像下面的代码一样

raw=pd.read_csv('raw_6_12_8_30.csv')
b=[]

for i in range(len(raw)):
    if raw['Status'].iloc[i]==0:            
        print(i)

答案 1 :(得分:0)

您可以尝试:

for i in range(0,len(raw)-1):
我猜测键错误11是由于索引范围引起的。键11可能不在范围内。

答案 2 :(得分:0)

您是否要删除spicesnull的所有行?

raw.dropna(subset="spices", inplace=True)

要在状态为0的情况下打印:

raw_subset = raw[raw["Status"]==0]
print(raw_subset)

# To get the specific indices
print(raw_subset.index)