python - 我不能按列名提取数据?

标签 python pandas dataframe data-science

我刚开始使用 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/

相关文章:

python - FTP 请求错误。 Django、FTP、Python

python - 如何使用 CSV 中的列追加目录中的所有文件?

python - 如何使用 FuncAnimation 通过 matplotlib 更新和动画多个图形?

python - Pandas 中 csv 的条件行读取

python - 在 python 中读取 15 M 行 csv 文件的有效方法

python - 用 numpy 数组的数据填充 Pandas 数据框列的前导零

python - 将 CELL 中最常见的元素附加到 pandas 列

python - 如何使用 str.replace 和正则表达式仅删除某些字符串和字符,但不删除日语

python - Pandas - 比较数据框中的 2 列并返回计数

python - 查找条件中的第一个信号