Python 从行中的字符串更改列名称
假设我们有一个数据帧(1000行100列),它的形式如下Python 从行中的字符串更改列名称,python,pandas,Python,Pandas,假设我们有一个数据帧(1000行100列),它的形式如下 unnamed : 1 unnamed : 2 unnamed : 3 unnamed : 4 unnamed : 5 ... unnamed : 99 0 Names Total players 1 (empty cell) male female age<
unnamed : 1 unnamed : 2 unnamed : 3 unnamed : 4 unnamed : 5 ... unnamed : 99
0 Names Total players
1 (empty cell) male female age< 18(string) age>18(string)
2 Team 1 5 2 4 3
3 Team 2
...
999
未命名:1未命名:2未命名:3未命名:4未命名:5。。。未名:99
总共有0名玩家
1(空单元格)男女年龄<18(字符串)年龄>18(字符串)
2队1 5 2 4 3
3第2队
...
999
我想要它的形式
Names Total players male Total players female Total players age< 18(string) Total players age> 18(string)
0 Team 1 5 2 4 3
1 Team 2
...
999
姓名球员总数男性球员总数女性球员总数年龄<18岁(字符串)球员总数年龄>18岁(字符串)
0团队1 5 2 4 3
1第2队
...
999
试试这个:
# rename columns
df.columns = df.iloc[0]
# delete the first row
df = df.iloc[1:]
试试这个
x = df.loc[0].dropna().to_list() //first row
y = df.loc[1].dropna().to_list() // second row
df.columns = x[:1] + [f'{x[1]} {col}' for col in y] // creating new columns using x and y
df = df.loc[2:].reset_index(drop=True)
print(df)
输出:
Names Total players male Total players female Total players age< 18(string) Total players age>18(string)
0 Team 1 5 2 4 3
1 Team 2 NaN NaN NaN NaN
姓名球员总数男性球员总数女性球员总数年龄<18岁(字符串)球员总数年龄>18岁(字符串)
0团队1 5 2 4 3
1队2楠楠楠
您的答案没有给出预期的输出。我添加了一行,删除了第一行。@deadshot-我想是的。让我们等待AlexNo的列名应该是这样的名称球员总数男性球员总数女性球员总数年龄<18岁(字符串)球员总数年龄>18岁(字符串)
我尝试了df.iloc[0]+df.iloc[1],但问题是两个词之间没有任何空格。如何添加空间?我尝试了df.iloc[0]+''+df.iloc[1]。此外,它不会将所有玩家的姓名添加到所需的其余单元格(对于年龄列,我的意思是)使用map()
而不是循环怎么样?为此,我们不使用x
而是使用map(lambda x:'Total players'+x,y)
。你说呢?@JenilDave我们需要将地图的结果转换为列表是的,这是不言而喻的。@JenilDave为你提供的信息是列表理解不是为了循环谢谢,但我知道!