Pandas преобразование очень медленно - PullRequest
0 голосов
/ 09 апреля 2020

Я пытался преобразовать python pandas из одного представления в другое, но очень медленно:

Мой текущий фрейм данных выглядит так:

Column0, Column 1, Column 2, Column 3, Column 10... 
   p1        1           2         8          3
   p2        2           4         9          6

Column0,   sample,       Exp
   p1       Column 1      1 
   p1       Column 2      2
   p1       Column 3      8
   p1       Column 10     3
   p2       Column 1      2 
   .           .          .
   .           .          . 

Я использую iterrows вставка в новый фрейм данных, но очень медленная. Колонка 1,2 не исправлена, но у меня есть коллекция со всеми именами.

1 Ответ

3 голосов
/ 09 апреля 2020

IIU C, вы можете использовать melt,

. Обычно зацикливание не рекомендуется в pandas, если нет другого выбора или у вас есть оправданный вариант использования.

d = """Column0, Column 1, Column 2, Column 3, Column 10 
   p1,        1,           2,         8,          3
   p2,        2,           4,         9,          6"""


from io import StringIO

df = pd.read_csv(StringIO(d),sep=',')

df2 = pd.melt(df,id_vars=['Column0'],var_name='Sample',value_name='Exp')

print(df2)

  Column0       Sample  Exp
0      p1     Column 1    1
1      p2     Column 1    2
2      p1     Column 2    2
3      p2     Column 2    4
4      p1     Column 3    8
5      p2     Column 3    9
6      p1   Column 10     3
7      p2   Column 10     6

Операции с цепочками

pd.melt(df,id_vars=['Column0'],var_name='Sample',value_name='Exp').rename(
             columns = {'Column0' : 'NewCol',...})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...