📜  如何在不更改其数据类型的情况下将数据框转换为 python 中的列表? - Python (1)

📅  最后修改于: 2023-12-03 15:09:00.107000             🧑  作者: Mango

如何在不更改其数据类型的情况下将数据框转换为 Python 中的列表?

在 Python 中,将数据框转换为列表是一个非常常见的需求。一般来说,我们可以通过使用 pandas 库中的 values 属性来将数据框转换为 ndarray 类型,然后再将 ndarray 类型转换为列表类型,但是这会改变数据类型,明显不符合题目需求。现在我们来看一下如何在不更改其数据类型的情况下将数据框转换为 Python 中的列表。

方法一:使用循环

我们可以使用循环来遍历数据框中的每个元素,并将它们添加到列表中。这种方法虽然简单,但是效率不高。

import pandas as pd

# 创建数据框
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6]})

# 将数据框转换为列表
lst = []
for row in df.iterrows():
    index, data = row
    lst.append(list(data))
    
print(lst)

输出:

[[1, 4], [2, 5], [3, 6]]
方法二:使用列表推导式

我们可以使用列表推导式来完成上述操作,这样可以节省代码行数,但是仍然需要遍历整个数据框。

import pandas as pd

# 创建数据框
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6]})

# 将数据框转换为列表
lst = [list(row) for row in df.itertuples(index=False)]

print(lst)

输出:

[[1, 4], [2, 5], [3, 6]]
方法三:使用 numpy 库

我们可以使用 numpy 库中的 tolist() 函数来将 ndarray 类型转换为列表类型。但是由于 ndarray 类型是将数据框转换的中间结果,因此这种方法仍然不符合题目要求。

import pandas as pd
import numpy as np

# 创建数据框
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6]})

# 将数据框转换为列表
lst = df.values.tolist()

print(lst)

输出:

[[1, 4], [2, 5], [3, 6]]

综上所述,虽然以上三种方法可以将数据框转换为列表,但是都或多或少改变了数据类型。如果想要完全符合题目要求,应该使用第一种或第二种方法。