错误:使用 zip 添加额外标头后,类型为"zip"的对象没有 len()



我尝试按照2行标头遵循此链接pandas dataframe并导出到CSV,以便我创建额外的标头而不删除原始标头,以下是我的编码:

df.columns = pd.MultiIndex.from_tuples((zip(df.columns,[uniquevaluesfirstcolumnww, '', uniquevaluesfirstcolumnww1, ' ',uniquevaluesfirstcolumnww2, '  '])))

我得到这样的错误:类型'zip'的对象没有len((

有人有任何想法吗?即使我尝试在zip之前添加列表,但也失败了。

我认为问题是zip返回python 3中的object,因此需要转换为list

df.columns = pd.MultiIndex.from_tuples((list(zip(df.columns,[uniquevaluesfirstcolumnww, '', uniquevaluesfirstcolumnww1, ' ',uniquevaluesfirstcolumnww2, '  ']))))

,但似乎您需要MultiIndex.from_arrays

cols = list('abcdef')
df = pd.DataFrame([[1,1,1,1,1,1]], columns=cols)
print (df)
   a  b  c  d  e  f
0  1  1  1  1  1  1
uniquevaluesfirstcolumnww = 'r'
uniquevaluesfirstcolumnww1 = 's'
uniquevaluesfirstcolumnww2 = 't'
vals = [uniquevaluesfirstcolumnww, '', 
        uniquevaluesfirstcolumnww1, ' ',
        uniquevaluesfirstcolumnww2, '  ']
df.columns = pd.MultiIndex.from_arrays([df.columns, vals])
print (df)
   a  b  c  d  e  f
   r     s     t   
0  1  1  1  1  1  1

如果列还具有MultiIndex

cols = pd.MultiIndex.from_product([['a','b','c'], ['x','y']])
df = pd.DataFrame([[1,1,1,1,1,1]], columns=cols)
print (df)
   a     b     c   
   x  y  x  y  x  y
0  1  1  1  1  1  1
uniquevaluesfirstcolumnww = 'r'
uniquevaluesfirstcolumnww1 = 's'
uniquevaluesfirstcolumnww2 = 't'
vals = [uniquevaluesfirstcolumnww, '', 
        uniquevaluesfirstcolumnww1, ' ',
        uniquevaluesfirstcolumnww2, '  ']
df.columns = pd.MultiIndex.from_arrays([df.columns.get_level_values(0), 
                                        df.columns.get_level_values(1), 
                                        vals])
print (df)
   a     b     c   
   x  y  x  y  x  y
   r     s     t   
0  1  1  1  1  1  1

最新更新