在 Pandas Dataframes 中查找单个文件的第一行和最后一行

Dax*_*liz 5 python dataframe pandas

我有一个由多个 .fits 文件组成的 Pandas Dataframe,每个文件都包含多个带有单独标签的列。我想提取一列并创建包含所述列的第一行和最后一行的变量,但我很难为单个 .fits 文件而不仅仅是整个 Dataframe 实现这一点。任何帮助,将不胜感激!:)

这是我在文件中读取的方式:

path = '/Users/myname/folder/'
m = [os.path.join(dirpath, f)
    for dirpath, dirnames, files in os.walk(path)
    for f in fnmatch.filter(files, '*.fits')]
Run Code Online (Sandbox Code Playgroud)

^^^ 这会递归地搜索我的目录,其中包含许多子文件夹中的多个 .fits 文件。

dataframes = []
for ii in range(0,len(m)):
    data = pd.read_csv(m[ii], header = 'infer', delimiter = '\t')
    d = pd.DataFrame(data)
    top = d['desired_column'].head()
    bottom = d['desired_column'].tail()
    First_and_Last = pd.concat([top,bottom])
Run Code Online (Sandbox Code Playgroud)

我尝试将 .head 和 .tail 命令用于 Pandas Dataframes,但我不确定如何正确使用它来满足我的需求。对于我如何读取 fits 文件,以下代码为我提供了前几行和最后几行(准确地说是 5 行,head 和 tail 的默认值是 5),如下所示:

0       2.456849e+06
1       2.456849e+06
2       2.456849e+06
3       2.456849e+06
4       2.456849e+06
1118    2.456852e+06
1119    2.456852e+06
1120    2.456852e+06
1121    2.456852e+06
1122    2.456852e+06
Run Code Online (Sandbox Code Playgroud)

我想要做的是尝试为我想要的特定列获取每个 .fits 文件的第一行和最后一行,而不仅仅是包含 .fits 文件的 Dataframe。按照我在 .fits 文件中读取的方式,Dataframe 似乎将所有文件连接在一起。关于如何实现这一目标的任何提示?

Chi*_*Lin 2

如果您只想要第一行:

top = d['desired_column'].head(1)
Run Code Online (Sandbox Code Playgroud)

如果您只想要最后一行:

bottom = d['desired_column'].tail(1)
Run Code Online (Sandbox Code Playgroud)

我没有发现“Dataframe 似乎将所有文件连接在一起”的问题。请你澄清一下这个问题好吗?
顺便说一句,之后data = pd.read_csv(m[ii], header = 'infer', delimiter = '\t')data已经是一个DataFrame. 因此,d = pd.DataFrame(data)是没有必要的。