как преобразовать папку с файлами pickle в один файл csv

#python #pandas #pickle

#python #панды #pickle

Вопрос:

У меня есть каталог, содержащий около 1700 файлов pickle, каждый файл — это все сообщения пользователя в Твиттере, я хочу преобразовать его в папку с файлами CSV, чтобы каждое имя файла CSV было именем файла pickle, и каждая строка содержала один твит пользователя … после этого я хочу просто20 лучших CSV с большим количеством примеров, чем у других… как я могу это сделать?

 # khabarlist = open_file_linebyline(pkl_path)
def open_dir_in_dict(input_path):
    files = os.scandir(input_path)
    my_dict = {}
    for file in files:
        # if len(file.name.split()) > 1:
        #     continue
        # if file.split('.')[-1] != "pkl":

        with open(file, 'r', encoding='utf8') as f:
            items = [i.strip() for i in f.read().split(",")]
        my_dict[file.replace(".pkl", "")] = items
        df = pd.DataFrame(my_dict)
        df.to_excel(file.replace(".pkl", "")   "xlsx")


open_dir_in_dict("Raw/")
  

Я написал для него пример кода, но он не сработал…

Комментарии:

1. Я нашел ответ…

Ответ №1:

 def open_dir_in_dict(input_path):
    files = os.scandir(input_path)
    my_dict = {}
    for file in files:
        if len(file.name.split()) > 1:
            continue
        if file.split('.')[-1] != "pkl":

            with open(file, 'r', encoding='utf-8', errors='replace') as f:
                print(f.readlines())
                items = [i.strip() for i in f.read().split(",")]  # encode('utf-8').strip()
        my_dict[file.replace(".pkl", "")] = items
        df = pd.DataFrame(my_dict)
        df.to_excel(file.replace(".pkl", "")   "xlsx")


# open_dir_in_dict("Raw/")
  

Ответ №2:

и лучший ответ…

 import os
import pandas as pd
import regex as re

data_path = "/content/drive/My Drive/twint/Data/pkl/Data/"
for path in os.listdir(data_path):
    my_tweets = []
    df = pd.read_pickle(data_path   path)
    for tweet in df.tweet:
        url = re.findall(r"httpS ", tweet)
        if url == []:
            my_tweets.append(tweet)
    new_df = pd.DataFrame({"tweets": my_tweets, "author": path.replace(".pkl", "")})  # path[:-4]
    new_df.to_csv("/content/drive/My Drive/twint/final.csv", index=False, mode="a", )