2017-01-06 2 views
2

Очень простой вопрос: что является самым простым способом (наименьший код) для создания набора имен столбцов для фрейма данных pandas, когда я хотел бы получить 20 столбцов с именами: s1, s2, s3 , ..., s20?Создание имен столбцов со строкой и номером

+1

понимание списка: '['s' + str (x) для x в диапазоне (1,21)]' вы можете либо передать это прямо в 'DataFrame' ctor code, либо переопределить столбцы:' df.columns = column_list ' – EdChum

+0

Вы имеете в виду список столбцов,' ['s% s'% x для x в диапазоне (1, 21)] '? – Zero

ответ

2

Вы можете использовать список понимание для генерации имен столбцов:

In [66]: 
col_list = ['s' + str(x) for x in range(1,21)] 
col_list 

Out[66]: 
['s1', 
's2', 
's3', 
's4', 
's5', 
's6', 
's7', 
's8', 
's9', 
's10', 
's11', 
's12', 
's13', 
's14', 
's15', 
's16', 
's17', 
's18', 
's19', 
's20'] 

После чего вы можете пройти это как column арг в DataFrame CTOR:

In [70]: 
df = pd.DataFrame(np.random.randn(5,20), columns=col_list) 
df.columns 

Out[70]: 
Index(['s1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11', 
     's12', 's13', 's14', 's15', 's16', 's17', 's18', 's19', 's20'], 
     dtype='object') 

Или просто перезаписать на columns атрибут путем назначения непосредственно:

In [71]: 
df = pd.DataFrame(np.random.randn(5,20)) 
df.columns = col_list 
df.columns 

Out[71]: 
Index(['s1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11', 
     's12', 's13', 's14', 's15', 's16', 's17', 's18', 's19', 's20'], 
     dtype='object') 

Вы также можете использовать rename или rename_axis, но они для перезаписи уже существующие имена столбцов, для которых Eсть уже родственный post

Вы также можете добавить префикс к серии, созданной из диапазона:

In [76]: 
col_list = 's' + pd.Series(np.arange(1,21)).astype(str) 
df.columns= col_list 
df.columns 

Out[76]: 
Index(['s1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11', 
     's12', 's13', 's14', 's15', 's16', 's17', 's18', 's19', 's20'], 
     dtype='object') 
Смежные вопросы