Есть ли быстрый способ сделать индекс из a1..a111? теперь это всего лишь 1,111.быстрый способ сделать индексный префикс с алфавитом
fruit = pd.Series(['aa'] * 50 + ['bb'] * 50 + [None] * 10, name='fruit', index=range(1,111))
Есть ли быстрый способ сделать индекс из a1..a111? теперь это всего лишь 1,111.быстрый способ сделать индексный префикс с алфавитом
fruit = pd.Series(['aa'] * 50 + ['bb'] * 50 + [None] * 10, name='fruit', index=range(1,111))
Вы можете использовать list comprehension
:
fruit = pd.Series(['aa'] * 50 + ['bb'] * 50 + [None] * 10, name='fruit',
index=['a'+ str(i) for i in range(1,111)])
print (fruit)
a1 aa
a2 aa
a3 aa
a4 aa
a5 aa
a6 aa
a7 aa
a8 aa
a9 aa
...
...
Еще быстрее решение преобразовать index
значения string
и добавить a
:
fruit = pd.Series(['aa'] * 50 + ['bb'] * 50 + [None] * 10, name='fruit', index=range(1,111))
fruit.index = 'a' + fruit.index.astype(str)
Timings:
In [86]: %timeit pd.Series(['aa'] * 50000 + ['bb'] * 50000 + [None] * 10000, name='fruit', index=['a'+ str(i) for i in range(1,110001)])
10 loops, best of 3: 76 ms per loop
In [87]: %timeit pd.Series(['aa'] * 50000 + ['bb'] * 50000 + [None] * 10000, name='fruit', index=range(1,110001)).rename_axis('a{}'.format)
10 loops, best of 3: 84.9 ms per loop
In [88]: %timeit jez()
10 loops, best of 3: 46.5 ms per loop
использование rename_axis
fruit.rename_axis('a{}'.format)
a1 aa
a2 aa
a3 aa
a4 aa
a5 aa
a6 aa
a7 aa
a8 aa
a9 aa
a10 aa
a11 aa
a12 aa