Как преобразовать Dataframe в Series? - PullRequest
0 голосов
/ 15 ноября 2018

Я хочу преобразовать N столбцов в одну серию. Как это сделать эффективно?

Введите:

    0   1   2   3
0  64  98  47  58
1  80  94  81  46
2  18  43  79  84
3  57  35  81  31

Ожидаемый результат:

0     64
1     80
2     18
3     57
4     98
5     94
6     43
7     35
8     47
9     81
10    79
11    81
12    58
13    46
14    84
15    31
dtype: int64

Пока я пытался:

print df[0].append(df[1]).append(df[2]).append(df[3]).reset_index(drop=True)

Я не удовлетворен своим решением, более того, оно не будет работать для динамических столбцов. Пожалуйста, помогите мне найти лучший подход.

Ответы [ 6 ]

0 голосов
/ 15 ноября 2018

Вот еще один короткий.

>>> pd.Series(df.values.ravel(order='F'))                                                                                                               
>>> 
0     64
1     80
2     18
3     57
4     98
5     94
6     43
7     35
8     47
9     81
10    79
11    81
12    58
13    46
14    84
15    31
dtype: int64
0 голосов
/ 15 ноября 2018

вам нужно np.flatten

pd.Series(df.values.flatten(order='F'))

out[]
0     64
1     80
2     18
3     57
4     98
5     94
6     43
7     35
8     47
9     81
10    79
11    81
12    58
13    46
14    84
15    31
dtype: int64
0 голосов
/ 15 ноября 2018

Вы также можете использовать Series класс и .values атрибут:

pd.Series(df.values.T.flatten())

Выход:

0     64
1     80
2     18
3     57
4     98
5     94
6     43
7     35
8     47
9     81
10    79
11    81
12    58
13    46
14    84
15    31
dtype: int64
0 голосов
/ 15 ноября 2018
df.T.stack().reset_index(drop=True)

Out:

0     64
1     80
2     18
3     57
4     98
5     94
6     43
7     35
8     47
9     81
10    79
11    81
12    58
13    46
14    84
15    31
dtype: int64
0 голосов
/ 15 ноября 2018

Вы можете использовать unstack

pd.Series(df.unstack().values)
0 голосов
/ 15 ноября 2018

Использование pd.melt() -

df.melt()['value']
* 1006 1007 * ** Выход * 1008 1009 * **
0     64
1     80
2     18
3     57
4     98
5     94
6     43
7     35
8     47
9     81
10    79
11    81
12    58
13    46
14    84
15    31
Name: value, dtype: int64
...