如何将Dataframe转换为Series?

时间:2018-11-15 10:49:35

标签: python pandas dataframe series

我想将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 :(得分:3)

您需要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

答案 1 :(得分:2)

您可以使用unstack

pd.Series(df.unstack().values)

答案 2 :(得分:2)

这又是一个简短的故事。

>>> 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

答案 3 :(得分:1)

使用pd.melt()-

df.melt()['value']

输出

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

答案 4 :(得分:1)

df.T.stack().reset_index(drop=True)

出局:

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

答案 5 :(得分:1)

您还可以使用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