我尝试关注此链接pandas dataframe with 2-rows header and export to csv,以便我创建额外的标头而不删除原始标头,下面是我的编码:
df.columns = pd.MultiIndex.from_tuples((zip(df.columns,[uniquevaluesfirstcolumnww, '', uniquevaluesfirstcolumnww1, ' ',uniquevaluesfirstcolumnww2, ' '])))
我收到如下错误:类型' zip'没有len()
任何人都有任何想法?即使我尝试在zip之前添加列表但也失败了。
答案 0 :(得分:1)
我认为zip
中的问题是object
返回python 3
,因此需要转换为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