2016-11-21 1 views
1

У меня есть кадр данных со 100 строками и 26000 столбцами, и у него уже есть заголовок. Но как я могу добавить дополнительный заголовок, который говорит «XXXX» каждому из этих столбцов 26000?Как добавить заголовок (который состоит из тысяч имен) в pandas dataFrame

Я знаю, что могу сделать что-то подобное. Но есть ли другой простой способ?

df = pd.read_csv("filename", sep='\t', names = ["XXXX", "XXXX", "XXXX", "XXXX", ..........(26995 times)........, "XXXX"]) 
+0

Вы можете использовать 'имена = [ "XXXX"] * 26000', но если использовать' 0.19.1' также не может получить дубликаты имен колонок – jezrael

+0

Какова цель этого? Вы спрашиваете, как заменить все имена столбцов одинаковыми или вы хотите добавить новый уровень столбцов в дополнение к существующим столбцам? – EdChum

+0

новый столбец к существующему. – user1883491

ответ

2

Я думаю, что вы можете использовать MultiIndex.from_tuples:

import pandas as pd 
from pandas.compat import StringIO 

temp=u"""a;b;c;d 
1;11;12;1 
1;14;15;3 
""" 
#after testing replace StringIO(temp) to filename 
df = pd.read_csv(StringIO(temp), sep=";") 
print (df) 
    a b c d 
0 1 11 12 1 
1 1 14 15 3 

#add level to columns - get multiindex 
new_cols = list(zip(df.columns, ['XXX'] * len(df.columns))) 
df.columns = pd.MultiIndex.from_tuples(new_cols) 
print (df) 
    a b c d 
    XXX XXX XXX XXX 
0 1 11 12 1 
1 1 14 15 3 

new_cols = list(zip(['XXX'] * len(df.columns), df.columns)) 
df.columns = pd.MultiIndex.from_tuples(new_cols) 
print (df) 
    XXX   
    a b c d 
0 1 11 12 1 
1 1 14 15 3 

#temporary change value of multi_sparse 
with pd.option_context('display.multi_sparse', False): 
    print (df) 

    XXX XXX XXX XXX 
    a b c d 
0 1 11 12 1 
1 1 14 15 3 
+0

выглядит великолепно, можно ли добавить его в 1-ю строку вместо 2-го? – user1883491

+0

уверен, seee редактирование. – jezrael

+0

Большое спасибо @jezrael – user1883491