我已经阅读了许多excel文件并将它们连接成一个数据帧。我还添加了密钥,因此我知道任何给定的一块/大块数据来自哪个excel文件。知道哪个文件数据来自我的工作非常重要。
我的excel文件都以数字增加结束。例如。 _00,_01,_02,_03等
path = os.getcwd()
allFiles = glob.glob(os.path.join(path, "*.xlsx"))
allFiles.sort() # put files in numerical order
# e.g. _00, then _01, then _02, and so on
keys = [[] for x in range(len(allFiles))]
for idx, name in enumerate(allFiles):
keys[idx] = name[-7:-5] # returns numbers 00, 01, 02, etc.
df = pd.concat((pd.read_excel(f) for f in allFiles), keys = keys)
现在我将所有这些数据都放在一个数据帧中,如何使用任何给定的密钥访问所有数据?例如,我想对第一个excel文件中的所有数据进行直方图;密钥为'00'
在一个数据框架中拥有所有内容甚至是最好的方法吗?
答案 0 :(得分:2)
我认为最简单的是使用DataFrame.xs
:
df1 = df.xs('00')
或者:
df1 = df.loc['00']
编辑:
您的代码似乎应该简化:
df = pd.concat({f[-7:-5]: pd.read_excel(f) for f in allFiles})
答案 1 :(得分:0)
我认为在相同的数据框中拥有所有内容是可取的,并强烈建议不要拆分它。 我会推荐像这样的东西
import matplotlib.pyplot as plt
plt.hist(df[df["column"]== '00'])
plt.show()
('column'是包含该行来自哪个文件以及'00'是特定值的信息的列。)