从内容超过 N 行的多个文件创建数据框

Create data frame from many files which has more than N line of content

我希望从一个目录中的许多文件创建一个数据框,幸运的是,我已经成功地做到了。我使用以下代码将文件内容读入数据框,它有两列:“标题”和“歌词”,其中“歌词”列包含文件的内容,“标题”列是文件名.

file_temp = [os.path.join(data_folder,i) for i in os.listdir(data_folder) if os.path.isfile(os.path.join(data_folder,i))]

df = pd.DataFrame()

#for every file in folder, read it and append to a empty dataframe with column filename as 'Title'
for file in file_temp:
    _df = pd.read_csv(file, names =['lyrics'], header=None, index_col=False, sep='\n', encoding='utf-8')
    _df['Title'] = os.path.split(file)[-1]
    df = df.append(_df)
df_group = df.groupby('Title').agg({'lyrics': lambda x: " ".join(x)}).reset_index()

我需要得到的是,数据框应该只包含超过N行的文件的内容。例如,下面是具有以下内容的第一个文件

       आज न छोड़ेंगे बस हमजोली
       
       खेलेंगे हम होली
       
       चाहे भीगे तेरी चुनरिया
       
       चाहे भीगे रे चोली
       
       खेलेंगे हम होली
       
       होली है!

第二个文件的内容

           ए पार्टी ओ पार्टी
       
       ए पार्टी पार्टी पार्टी

是否可以只将文件读入超过2行内容的dataframe?这意味着,不应将第二个文件读入数据框。

除非您阅读文件,否则无法知道文件中的行数。如果您需要处理大量文件,但我建议使用如下函数 su h 来获取文件中的行数:

def lines_in_file(file_name):
    with open(file_name, 'r') as file:
        lines = file.readlines()
        return len(lines)

然后您可以在 if 语句中使用此函数,如下所示:

for file in temp_file:
    if lines_in_file(file) > n:
        pd.read_csv(file)
        .... The rest of your code

采用这种方法的原因是 pandas read_csv 与此函数中使用的方法相比相当慢。 如果你宁愿坚持使用 pandas 来读取所有文件,你可以使用 _df.shape[0] 来获取数据帧中的行数,并且有这样的东西:

if _df.shape[0] > n:
    df = df.append(_df)