我试图在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列开始的标题,以便它成为:
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
(根据我的实际数据)。显然,我的新数据的列数与旧数据的列数不同。我做错了什么
转换前3列名称和第3个值后第一行的所有数据:
或:
Anf然后:
如果可能,通过^{} 中的参数
header=[0,1]
通过前两行创建MultiIndex
,然后使用:相关问题 更多 >
编程相关推荐