Прекратить перезапись при создании нового df из цикла через оригинальный df - PullRequest
1 голос
/ 23 октября 2019

У меня большой df, где в конце столбца указано имя файла. Я хочу сделать новый CSV, продолжая строки всех файлов, которые имеют «М» в имени файла. Мне удалось сделать большинство из этого, но конец CSV имеет только одну строку, содержащую последний файл, который был найден в большом CSV. Я хочу, чтобы каждая строка была перенесена в CSV на новой строке.

Я пробовал df.append разными способами, но мне не повезло. Я видел несколько очень разных способов, но мне потребовалось изменить весь мой код, когда кажется, что требуется лишь незначительная корректировка

path = '.../files/'

big_data = pd.read_csv('landmark_coordinates.csv', sep=',', skipinitialspace=True) #open big CSV as a DF

#put photos into a male array based on the M character that appears in the filename

male_files = [f for f in glob.glob(path + "**/*[M]*.??g", recursive=True)]

for each_male in male_files: #for all male files
       male_data = big_data.loc[big_data['photo_name'] == each_male] # extract their row of data from the CSV and put in a new dataframe
    # NEEDED: ON A NEW LINE! MUST APPEND. right now it just overwrites
        male_data.to_csv('male_landmark_coordinates.csv', index=False, sep=',') #transport new df to csv format

Как я уже сказал, мне нужно убедиться, что каждый файл начинается с новой строки. Был бы очень признателен за любую помощь, как будто я так близко!

1 Ответ

0 голосов
/ 25 октября 2019

Каждый раз, когда вы звоните df.to_csv, вы перезаписываете CSV.

male_data = pd.DataFrame()

for each_male in male_files: #for all male files
       male_data.append(big_data.loc[big_data['photo_name'] == each_male])


male_data.to_csv('male_landmark_coordinates.csv', index=False, sep=',') #transport new df to csv format

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...