Python - 重命名元组列标题

Sco*_*tEU 1 python pandas

我已经检查过:

重命名数据框中的元组列名称

这些回应似乎都不起作用。

我有一个数据框,其中元组作为列标题:

list(dfA)

[('Total', 'Book'),
 ('Total', 'Book Chapter'),
 ('Total', 'Book edited'),
 ('Total', 'Conference Proceeding_Abstract'),
 ('Total', 'Consultancy Report'),
 ('Total', 'Journal Article'),
 ('Total', 'Manual / Guide'),
 ('Total', 'Manual/Guide'),
 ('Total', 'Monograph'),
 ('Total', 'Other'),
 ('Total', 'Policy briefing_report'),
 ('Total', 'Scholarly edition'),
 ('Total', 'Systematic review'),
 ('Total', 'Technical Report'),
 ('Total', 'Technical Standard'),
 ('Total', 'Thesis'),
 ('Total', 'Working Paper')]
Run Code Online (Sandbox Code Playgroud)

我尝试了多种重命名方法,但都行不通。我应该提到,列可能会改变,但这是最大数量(因此我不使用位置)

我尝试过的这段代码是:

dfA.rename(columns = {('Total', 'Book') : 'Book'})
dfA = dfA.rename(columns = {('Total', 'Book') : 'Book'})
dfA.rename(columns={'('Total', 'Book')':"Book"})
Run Code Online (Sandbox Code Playgroud)

我也尝试过将它们转换为字符串,如下所示:

dfA.columns = [str(s) for s in dfA.columns]
Run Code Online (Sandbox Code Playgroud)

然而,它仍然不会改变任何事情。有什么建议么?

jez*_*ael 6

我认为如果需要元组的第二个值,您需要list comprehension

dfA.columns = [x[1] for x in dfA.columns]
Run Code Online (Sandbox Code Playgroud)