簡體   English   中英

pandas.Dataframe.loc() 和 pandas.ZC699575A5E8AFD9E22A7ECC8CAB1A1 不工作。

[英]pandas.Dataframe.loc() and pandas.Dataframe.drop() not working

我正在使用 pandas 創建一個排名列表。 我創建了一個 csv 文件並使用 pandas 創建了一個 Dataframe。 當我使用 iloc 方法對 dataframe 進行切片時,它工作正常,但使用 loc 方法顯示錯誤。 使用 drop 方法也會顯示類似的錯誤。 當我刪除第一列“名稱”時,它工作正常,但它再次不適用於其余列。

import pandas
#creating CRL
file1 = pandas.read_csv("csvfile_of_ranklist2.csv")
print(file1.index)
print(file1.columns)
file2 = file1.drop("Name",axis=1)
print(file1)
print(file2)

它給出了以下 output:

C:\Users\VIVEK PANDYA\Documents\Python programs>E:/python.exe "c:/Users/VIVEK PANDYA/Documents/Python programs/ranklist.py"
RangeIndex(start=0, stop=8, step=1)
Index(['Name', ' Category', ' Maths', ' Physics', ' Chemistry', 'Unnamed: 5'], dtype='object')
              Name  Category   Maths   Physics   Chemistry Unnamed: 5
0     Vivek Pandey        C1      89        78         100        NaN
1    Prateek Singh        C3     100        75          68
2     Yuvraj Singh        C3      88        92          36        NaN
3  Shaiqua Parveen        C2     100        52          32        NaN
4      Sana Afshan        C1      78        85          21        NaN
5    Shabber Islam        C2      89        23          56        NaN
6    Brahma Pandey        C4      78        54          62        NaN
7    Santosh Singh        C1      85        64          92        NaN
   Category   Maths   Physics   Chemistry Unnamed: 5
0        C1      89        78         100        NaN
1        C3     100        75          68
2        C3      88        92          36        NaN
3        C2     100        52          32        NaN
4        C1      78        85          21        NaN
5        C2      89        23          56        NaN
6        C4      78        54          62        NaN
7        C1      85        64          92        NaN

但是,如果我嘗試刪除“類別”,則會產生錯誤:

import pandas
#creating CRL
file1 = pandas.read_csv("csvfile_of_ranklist2.csv")
print(file1.index)
print(file1.columns)
file2 = file1.drop("Category",axis=1)
print(file1)
print(file2)

C:\Users\VIVEK PANDYA\Documents\Python programs>E:/python.exe "c:/Users/VIVEK PANDYA/Documents/Python programs/ranklist.py"
RangeIndex(start=0, stop=8, step=1)
Index(['Name', ' Category', ' Maths', ' Physics', ' Chemistry', 'Unnamed: 5'], dtype='object')
Traceback (most recent call last):
  File "c:\Users\VIVEK PANDYA\Documents\Python programs\ranklist.py", line 8, in <module>
    file2 = file1.drop("Category",axis=1)
  File "E:\lib\site-packages\pandas\util\_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "E:\lib\site-packages\pandas\core\frame.py", line 4906, in drop
    return super().drop(
  File "E:\lib\site-packages\pandas\core\generic.py", line 4150, in drop
    obj = obj._drop_axis(labels, axis, level=level, errors=errors)
  File "E:\lib\site-packages\pandas\core\generic.py", line 4185, in _drop_axis
    new_axis = axis.drop(labels, errors=errors)
  File "E:\lib\site-packages\pandas\core\indexes\base.py", line 6017, in drop
    raise KeyError(f"{labels[mask]} not found in axis")
KeyError: "['Category'] not found in axis"

同樣,如果我嘗試使用標簽刪除索引或切片索引或列,則會產生“軸中未找到索引”或“軸中未找到列”錯誤。 我嘗試在 pandas 文檔中尋找任何解決方案,但沒有找到解決方案。 如何解決?

通過file1.columns獲取列名。 復制並使用這些列名。 您的列名可能在開頭或結尾有空格。

' Category'和大多數其他列名都有一個前導空格。 它在錯誤KeyError: "['Category'] not found in axis" ,因為'Category'不是列名。

整理列名的簡單方法是:

file.columns = [x.strip() for x in file.columns]

現在您的 Pandas Dataframe 的列沒有前導空格,並且使用'Category'確實有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM