将整数 header 转换为字符串以便在 pandas 中应用元组

convert integer header to a sting in order to apply tuple in pandas

我有这个数据框:

01100MS,02200MS,02500MS,03100MS,22
626323,616720,616288,611860,622375
5188431,5181393,5173583,5165895,5152605
1915,1499,1310,1235,1907
1,4.1,4.41,4.441,4.4441
2,4.2,4.42,4.442,4.4442
3,4.3,4.43,4.443,4.4443
4,4.4,4.44,4.444,4.4444
5,4.5,4.45,4.445,4.4445
6,4.6,4.46,4.446,4.4446
7,4.7,4.47,4.447,4.4447
8,4.8,4.48,4.448,4.4448
9,4.9,4.49,4.449,4.4449
10,5,4.5,4.45,4.445
11,5.1,4.51,4.451,4.4451

我想要多个 header。根据,我是这样做的:

dfr = pd.read_csv(file_input,sep=',',header=None,skiprows=0)
cols = tuple(zip(dfr.iloc[0], (dfr.iloc[1]).apply(lambda x: x[1:-1])))

但是,我得到一个错误:

TypeError: 'float' object is not subscriptable

这个问题,我想,是因为 header 中的 22 是一个整数。事实上,如果我用 A22 代替 22 它就可以了。

由于我必须处理多个大型数据框,所以我无法完成。因此,我尝试了这个解决方案:

dfr.iloc[0] = dfr.iloc[0].apply(str)

不过好像不行。

你有什么建议吗?

apply(lambda x: x[1:-1]) 删除第一个和最后一个字符,这在你引用的另一个 post 中是需要的,因为格式是 [col1] 但在你的情况下你想要与文件中的值相同.
问题是 22 只有 2 个字符。所以只需删除应用功能,然后您就可以构建 multiIndex。