pandas - 从存储在列表中的数据框中提取列。列表由多个数据框组成
问题描述
我有一个名为 data 的列表,它由多个数据框组成。data[0]、data[1] 等将显示数据框 1、数据框 2 等。所有数据框的行数和属性数都不同。我想知道有没有一种方法可以编写 data[1][2] 来提取数据框 2 和列 3 名称。即 data[i][j] 表示第 (i+1) 个数据帧和第 (i+1) 个数据帧中的第 (j+1) 个属性。
list(data[1].columns.values) 我知道上面的代码给了我所有的属性。我有兴趣了解使用上述方式的索引 - data[i][j]。
import os
import pandas as pd
path = os.getcwd()
files = os.listdir(path)
files
files_xlxs = [f for f in files if f[-4:] == 'xlsx']
files_xlxs = [f for f in files_xlxs if '$' not in f]
data = []
for f in files_xlxs:
pathFile = path + '\\' + f
print(pathFile)
data.append(pd.read_excel(pathFile))
data[1]
Data[1][2] 应该从数据框 2 中提取第三列名称。编译后出现以下错误。
KeyError Traceback(最近一次调用最后)D:\Anaconda\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance) 2656 try: -> 2657 return self._engine。 get_loc(key) 2658 除了 KeyError:
pandas/_libs/index.pyx 在 pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/index.pyx 在 pandas._libs.index.IndexEngine.get_loc()
pandas/_libs/hashtable_class_helper.pxi 在 pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas/_libs/hashtable_class_helper.pxi 在 pandas._libs.hashtable.PyObjectHashTable.get_item()
关键错误:2
在处理上述异常的过程中,又出现了一个异常:
() ----> 1 个数据[1][2] 中的 KeyError Traceback (最近一次调用最后一次)
解决方案
pandas 试图告诉您的是,您正在尝试访问2
在没有名为 的列的数据框中命名的列2
。您不能像访问列表中的元素一样访问数据框中的列,即按索引。
但是,您可以做的是从数据框列的列表中获取列标识符,然后使用它来查询您的数据框。而不是做data[1][2]
你可以做data[1][data[1].columns[2]]
。
这是一个完整的示例,其中包含一个名为 的列表data
,其中包含两个数据框,每个数据框有两列:
import pandas as pd
data = [
pd.DataFrame({"number": [1, 2, 3], "age": [10, 20, 30]}, columns=["number", "age"]),
pd.DataFrame({"value": [4, 5, 6], "bananas": [40, 50, 60]}, columns=["value", "bananas"])
]
# Print the content of each data frame
for df in data:
print df
这将打印出两个数据框:
number age
0 1 10
1 2 20
2 3 30
value bananas
0 4 40
1 5 50
2 6 60
然后我们只访问并打印列表中每个数据框的第二列,分别打印age
列和bananas
列:
# Print 2nd column of 1st data frame
print data[0][data[0].columns[1]]
# Print 2nd column of 2nd data frame
print data[1][data[1].columns[1]]
这使:
0 10
1 20
2 30
Name: age, dtype: int64
0 40
1 50
2 60
Name: bananas, dtype: int64
推荐阅读
- jmeter - Jmeter-我有用户登录一次并在一个线程中多次执行各种事务的场景
- java - 带有 Maven 和 IntelliJ 的 OpenJFX 14:无法运行应用程序
- html - 如何在 5 列网格中居中 3 个项目
- java - 在实现 org.springframework.validation.Validator 时随时访问 Headers
- python - 将包含字符串的 RDD[Row] 转换为 IntegerTypes 的 Dataframe
- javascript - 如何在 Express 中验证模式?
- javascript - Angular Kendo UI:在 masktextbox 中显示 X 而不是文本
- api - 如何使用 API IntelliJ 想法将搜索栏与您自己的代码存储库链接?
- ffmpeg - 暂停 ffmpeg 屏幕截图?
- html - 我们如何浏览网页将维护主登录页面的导航栏