如何将数据框转换为序列?

4

我可以帮你将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个回答

2
你可以使用 unstack
pd.Series(df.unstack().values)

2

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

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

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接