使用 dataframe.column 重命名列后,Pandas 合并给出 Nan 值

时间:2021-01-21 16:53:49

标签: python pandas dataframe

使用一个公共列(如 Vlookup)合并 CSV 文件。所有 CSV 文件都有相同的列标题,但每个 CSV 都有不同公司的数据。不同公司的每日最高价、最低价、收盘价等数据。

所以我试图使用 dataframe.column 重命名它,但在重命名这些列后给出了 Nan 值。如果我在 CSV 文件中手动更改名称,那么它工作得很好,所以我的代码是正确的,但如果我重命名列,它都会给出“Nan”。

import pandas as pd
import glob
import os

df = pd.read_csv("GE.csv")

for csv in glob.glob('Output/*.csv'):
    df1 = pd.read_csv(csv)
    ticker = os.path.basename(csv).split(".")[0]
    df1.columns = ['Date', f'{ticker} Open', f'{ticker} High', f'{ticker} Low', f'{ticker} Close', f'{ticker} Adj Close', f'{ticker} Volume']
    df = df.merge(df1, on='Date', how='left')

print(df)
df.to_csv('merged.csv', index=False)

enter image description here

1 个答案:

答案 0 :(得分:1)

本质上,我认为您只是在创建新列。要重命名数据框列,请使用 rename

df = df.rename(columns={'old_column_name_to_change':'new_column_name'})

# example
df = df.rename(columns={'Open': f'{ticker} Open', 'Low' : f'{ticker} Low'})

使用这种方法,您可以通过将它们作为字典传递来指定要更改的名称,并且顺序无关紧要