我刚开始使用 pandas 库。尽管我进行了研究,但我仍然没有弄清楚。 我想提取名为 q 的列的数据。但它给出了一个错误。我该怎么做?
import pandas as pd
data = pd.read_excel('test1.xlsx')
df = pd.DataFrame(data)
print(df.loc[df['q']])
错误:
Traceback (most recent call last):
File "c:/Users/sabca/visual studio code projects/webscraping/pandastest.py", line 11,
in <module>
print(df.loc[df['q']])
File "C:\Users\sabca\AppData\Local\Programs\Python\Python38\lib\site-
packages\pandas\core\indexing.py", line 879, in __getitem__
return self._getitem_axis(maybe_callable, axis=axis)
File "C:\Users\sabca\AppData\Local\Programs\Python\Python38\lib\site-
packages\pandas\core\indexing.py", line 1099, in _getitem_axis
return self._getitem_iterable(key, axis=axis)
File "C:\Users\sabca\AppData\Local\Programs\Python\Python38\lib\site-
packages\pandas\core\indexing.py", line 1037, in _getitem_iterable
keyarr, indexer = self._get_listlike_indexer(key, axis, raise_missing=False)
File "C:\Users\sabca\AppData\Local\Programs\Python\Python38\lib\site-
packages\pandas\core\indexing.py", line 1254, in _get_listlike_indexer
self._validate_read_indexer(keyarr, indexer, axis, raise_missing=raise_missing)
File "C:\Users\sabca\AppData\Local\Programs\Python\Python38\lib\site-
packages\pandas\core\indexing.py", line 1298, in _validate_read_indexer
raise KeyError(f"None of [{key}] are in the [{axis_name}]")
KeyError: "None of [Index(['qwe1', 'asdf1', 'adfs4', 'wer7', 'tyu1', 'ghfhg5'],
dtype='object')] are in the [index]"
最佳答案
修复 data
/df
混淆
首先,真的不需要这条线
df = pd.DataFrame(data)
因为 data
已经是 pd.read_excel
函数返回的 Pandas DataFrame。
相反,我建议省略这一行并简单地使用以下内容(我将使用 df
来引用使用此函数生成的 Pandas DataFrame 以用于此答案的其余部分)。
df = pd.read_excel('test1.xlsx')
从 q
列返回 Pandas 系列
假设 q
是您的 df
中列的名称,那么:
df['q']
将返回表示列 q
的 Pandas 系列。
如果您想使用 df.loc
,此索引方法将一系列行作为第一项返回,并将可选的列范围作为第二项。假设您要返回您可以使用的 q
列的所有行。
df.loc[:, 'q']
从 q
列返回值的 Numpy 数组
你可以使用:
df['q'].values
返回一个 Numpy 数组,其中包含存储在 q
列中的值。
关于python - 我不能按列名提取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64283735/