[英]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.