【发布时间】:2020-05-07 06:52:17
【问题描述】:
我正在尝试在 Python 中复制我在 R 中制作的代码,但是当我尝试修复我的标头时遇到了困难。我想合并表头和第一行,但是好像不行。
我的数据目前如下所示:
Acronym Project Number Title Dates Unnamed: 4 Unnamed: 5
0 NaN NaN NaN Start date Duration Number of Participants
1 YoYo 5678 blabla 01-01-2020 36 4
2 SPY 1452 blabla 06-03-2018 12 6
3 NoNo 6280 blabla 02-05-2019 48 8
4 MaGiK 2749 blabla 01-05-2016 12 9
我的数据标题分布在两行中。前三个标题是应有的。但是,从第 4 列开始,我的列名位于第二行。简单地组合标题和第一行是行不通的,因为某些列(如第 4 列)在标题和第一行中都有值。
理想情况下,我想做的是将标题保留在前三列中,并将第一行中的值用作第 4 列以后的标题,这样它就变成了:
Acronym | Project Number | Title | Start date | Duration | Number of Participants
在 R 中,这将通过
来完成Projects <- Projects %>%
set_names(c(names(Projects)[1:3], as.character(.[1,])[4:6])) %>%
rownames_to_column("index") %>%
filter(index != 1 ) %>%
select(-index)
基于 this question 我在 Python 中尝试过这个
Projects_clean.columns = np.concatenate([Projects_clean.iloc[0, :2], Projects_clean.columns[0:3]])
和
Projects_clean.columns = np.append(Projects_clean.iloc[0,:2], Projects_clean.columns[0:3])
但这会返回
"values have {new} elements".format(old=old_len, new=new_len)
Length mismatch: Expected axis has 24 elements, new values have 10 elements
(根据我的实际数据)。显然,我的新数据与旧数据的列数不同。我做错了什么?
【问题讨论】: