【问题标题】:Repeat the same process for all CSVs in a folder对文件夹中的所有 CSV 重复相同的过程
【发布时间】:2022-01-19 02:35:22
【问题描述】:

我一直在尝试对同一目录中的大约 50 个 CSV 重复一组简单的过程。我知道我需要做一个for循环来重复它,以下是我所做的。但是,尽管在我的 jupyter notebook 中没有收到错误消息,但我的文件没有任何更改。我做错了什么?

我是刚开始学习Python的初学者。

import glob 
import os
import pandas as pd

path = "r'C:\3. Technical\3.4 GIS\1.1 Incoming\220107_Flow Data\test\WD_AM_PEAK\'"
all_files = glob.glob(os.path.join(path, "*.csv"))

for file in all_files:
    file_name = os.path.splitext(os.path.basename(file))[0]
    df = pd.read_csv(file_name)
    df.dropna(subset=['oo'])
    df.insert(3, "ODSegment", df['entrances'] + ' - ' + df['exits'])
    df['WD21AMoovph'] = df['oo']/100*df['estimatedCarsPerHour']
    df.rename(columns={"oo": "WD21AMoo", "estimatedCarsPerHour": "WD21AMvph"})
    df.to_csv(file_name, index=False, header=True)

非常感谢。

【问题讨论】:

    标签: python pandas csv for-loop


    【解决方案1】:

    每次对数据框进行操作时,它都会返回一个新的数据框,而原始数据框保持不变。最后,当您写 df.to_csv(...) 时,它只是将原始数据写回该位置。

    尝试:

    
    for file in all_files:
        file_name = os.path.splitext(os.path.basename(file))[0]
        df = pd.read_csv(file_name)
        df = df.dropna(subset=['oo'])
        df = df.insert(3, "ODSegment", df['entrances'] + ' - ' + df['exits'])
        df['WD21AMoovph'] = df['oo']/100*df['estimatedCarsPerHour']
        df = df.rename(columns={"oo": "WD21AMoo", "estimatedCarsPerHour": "WD21AMvph"})
        df.to_csv(file_name, index=False, header=True)
    

    【讨论】:

    • 非常感谢。我只是尝试过,但它仍然没有改变任何东西。不知道为什么..?将 csv 保存到另一个目录会更容易避免任何问题吗?
    • 就在df.to_csv(...)行之前,最终转换后的数据框是否有想要的内容?
    猜你喜欢
    • 2019-05-22
    • 2020-08-09
    • 2015-03-14
    • 2017-02-28
    • 2022-06-24
    • 1970-01-01
    • 2022-01-15
    • 2020-02-20
    • 2021-11-13
    相关资源
    最近更新 更多