【问题标题】:How to automate rename columns of a python Dataframe with the format column name + filename如何使用格式列名+文件名自动重命名python数据框的列
【发布时间】:2019-07-08 14:01:06
【问题描述】:

我有许多 CSV 文件,我想重命名每个文件的每一列。例如,一个 CSV 文件有一个名为“wind”的列,我想将其自动转换为:wind_Dar。 (Dar 是一个文件的名称)所以换句话说我希望每个文件的每一列都有标签“列名”_“当前文件名”

这是我的代码:

path = ".../As-Pre-" 
path_previsions = ["Dar.csv","Ope.csv","Wea.csv", "Wun.csv"] 
path_observations = ".../As-Ob.csv"
def get_forecast(path, path_pre, path_ob):
    list_data = []
    for forecaster in path_pre:
        dataframe = pd.read_csv(path + forecaster, sep=";").dropna(subset=["temperature"])
        dataframe["time"] = dataframe["time"].apply(lambda x: str(x).split(":")[0])
        dataframe = dataframe.groupby(['time']).mean()
        dataframe = dataframe.rename(index=str, columns={"humidity": "humidity_Y", "precipitation": "precipitation_Y",
                                    "temperature":"temperature_Y"})

        list_data.append(dataframe)

【问题讨论】:

  • 如果您不提供 csv 文件数据的最小示例,我认为没有人可以为您提供如何实现此目标的实际代码。无论哪种方式,想法是您应该存储文件的名称,我猜是forecaster,然后在更改数据框列名称时,只需分配新名称。
  • 你不能在重命名调用中添加类似 "wind": "wind_{}".format(forecaster.split(.)[0]) 的内容
  • 假设每次迭代的 path_pre 是 'Dar.csv' 等等...你可以这样做:suffix = forecaster.split('.')[0] 然后dataframe.columns = [el + suffix for el in dataframe.columns] 替换你重命名列的行。

标签: python dataframe filenames automatic-properties


【解决方案1】:

我不确定您的代码在哪里出错。但这里有一种简单的方法可以按照您希望使用列表理解的方式重命名列:

dataframe.columns = [x + forecaster.split('.')[0] for x in dataframe.columns]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 2020-06-13
    • 1970-01-01
    • 2018-09-23
    • 2018-01-04
    • 2018-04-02
    • 2020-02-23
    相关资源
    最近更新 更多