在创建新的df时停止覆盖,以免在原始的df中循环

2024-04-20 12:46:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的df,其中结束列是一个文件名。我想制作一个新的CSV文件,继续记录文件名中有“M”的所有文件的行。我已经设法做到这一点的大部分,但结束csv只有一行,包含最后一个文件已被发现在大型csv。我希望每一行都在新行上传输到csv

我已经尝试了很多方法,但没有任何运气。我见过一些非常不同的方法,但它需要改变我所有的代码时,感觉只有一个小的调整是必要的

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

就像我说的,我需要确保每个文件从一个新行开始。我真的很感激任何帮助,因为感觉我是如此接近


Tags: 文件csvthepath方法indffor
1条回答
网友
1楼 · 发布于 2024-04-20 12:46:07

每次调用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

相关问题 更多 >