我正在尝试处理一些时间序列数据,并且对 pandas 数据框相当陌生。我有一个包含两列的数据框,如下所示:
+---+-----------------------+-------+--+
| | 0 | 1 | |
+---+-----------------------+-------+--+
| 1 | 2018-08-02 23:00:00 | 456.8 | |
| 2 | 2018-08-02 23:01:00 | 457.9 | |
+---+-----------------------+-------+--+
我正在尝试将其转换为具有两列的系列,就像数据框中一样。如何做呢?因为 pd.series 正在将数据帧转换为一系列单列。
在 Pandas 中,不能创建具有两列的 Series。Pandas Series 是一个一维的、带标签的数组,只能保存一列数据。
如果你想将两列数据框转换为一个保持两列结构的对象,你可以使用以下选项:
-
使用
to_numpy()
将其转换为 NumPy 数组:
df = pd.DataFrame({
0: pd.to_datetime(['2018-08-02 23:00:00', '2018-08-02 23:01:00']),
1: [456.8, 457.9]
})
data_array = df.to_numpy()
print(data_array)
这将创建一个二维 NumPy 数组,其中每一行对应数据框中的一行。
-
使用
to_records()
将其转换为结构化数组:
data_records = df.to_records(index=False)
print(data_records)
这将创建一个结构化数组,其中每列都有一个名称(来自数据框的列名),并且可以像访问 NumPy 结构化数组中的字段一样访问数据。
- 使用列表推导创建一个元组列表:
data_list = [(row[0], row[1]) for row in df.values]
print(data_list)
这将创建一个包含元组的列表,每个元组代表数据框中的一行。
选择哪种方法取决于你打算如何使用转换后的数据。
标签:python,pandas From: 51873006