提问人:Thomas Murphy 提问时间:12/12/2016 最后编辑:Ignacio AlorreThomas Murphy 更新时间:8/19/2022 访问量:34129
重命名 pandas.concat 的 DataFrame 输出上的列
Renaming columns on DataFrame output of pandas.concat
问:
我正在通过连接其他 DataFrame 的列来构建一个新的 DataFrame,如下所示:
pairs = pd.concat([pos1['Close'], pos2['Close'], pos3['Close'], pos4['Close'], pos5['Close'],
pos6['Close'], pos7['Close']], axis=1)
我想将 Dataframe 的所有列重命名为标的证券的符号。有没有办法在 concat 方法调用期间执行此操作?在这里阅读有关该方法的文档 http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.concat.html 并没有给我一个可靠的答案。pairs
答:
12赞
Thomas Murphy
12/12/2016
#1
这就是我正在采取的方法。似乎符合我的所有要求。
symbols = ['JPM', 'WFC', 'BAC', 'C', 'STI', 'PNC', 'CMA']
pairs.columns = symbols
评论
1赞
EdChum
12/12/2016
你可以做,直接分配给底层的numpy数组表示可能并不总是有效pairs.columns = symbols
0赞
Thomas Murphy
12/13/2016
@EdChum 你能举个例子说明什么时候它不起作用吗?最好对此线程进行完整的讨论。
0赞
EdChum
12/13/2016
这里的问题是,它返回了一个基础值的 np 数组,这里我们进入了未知区域,因为我们不知道您返回的是视图还是数据副本。通常,应始终使用提供的方法来进行此类操作,以避免这种歧义.values
0赞
Thomas Murphy
12/14/2016
@EdChum 为反映该反馈而编辑
21赞
Ignacio Alorre
2/27/2021
#2
您可以使用以下属性一次性实现相同的目标:keys
pairs = pd.concat([pos1['Close'], pos2['Close'], pos3['Close'], pos4['Close'], pos5['Close'], pos6['Close'], pos7['Close']],
axis=1, keys= ['JPM', 'WFC', 'BAC', 'C', 'STI', 'PNC', 'CMA'])
评论
2赞
huang
8/30/2022
就我而言,它只是为我的列添加了一个新级别。
评论
rename(columns=some_dict)
pairs.columns = your_list
rename_axis