遍历DataFrame列表,为每个DataFrame第一列添加后缀的实现求助
解决方法
你可以把每个DataFrame和要添加的后缀配对后再循环,这样就能精准给第一列加上对应后缀,同时保留你已经实现的列名空格替换逻辑。
修改后的完整代码如下:
import pandas as pd px_data = {'Date': ['8/11/18', '8/12/18', '8/13/18', '8/14/18'], 'A df': [58.63, 21.25, 19.17, 18.8], 'B df': [35,105,27,98]} SC_data = {'Date': ['8/11/18', '8/12/18', '8/13/18', '8/14/18'], 'A df': [20.50, 6, 82, 74.6], 'B df': [74,62,8,99]} SMA_data = {'Date': ['8/11/18', '8/12/18', '8/13/18', '8/14/18'], 'A df': [2, 95.3, 39, 68.27], 'B df': [58,37,74,11]} px = pd.DataFrame(px_data) SC = pd.DataFrame(SC_data) SMA = pd.DataFrame(SMA_data) # 将DataFrame与对应的后缀配对,方便循环时调用 dfs_with_suffix = [(px, '_px'), (SC, '_SC'), (SMA, '_SMA')] for df, suffix in dfs_with_suffix: # 替换列名中的空格为下划线 df.columns = df.columns.str.replace(' ', '_') # 获取第一列的原列名 first_col_name = df.columns[0] # 给第一列重命名并添加后缀 df.rename(columns={first_col_name: f"{first_col_name}{suffix}"}, inplace=True) # 打印验证结果 print(df.columns[0])
关键细节说明
- 用配对的方式绑定DataFrame和后缀,比通过索引循环更直观,也避免索引出错的问题。
- 使用
rename方法修改列名,加上inplace=True会直接修改原DataFrame;如果不想改动原数据,可以去掉这个参数,把结果赋值给新变量。 - 如果要给所有DataFrame的第一列加同一个后缀(比如
_date),直接把循环里的后缀换成固定值即可,比如df.rename(columns={df.columns[0]: f"{df.columns[0]}_date"}, inplace=True)。
运行代码后会输出:
Date_px Date_SC Date_SMA
每个DataFrame的第一列都成功添加了对应后缀,同时列名的空格也完成了替换。
内容的提问来源于stack exchange,提问作者bigjdawg43
相关产品推荐
相关产品推荐

