Pandas DataFrame 转换为列表
Pandas 是一个强大的 Python 数据分析工具库,它提供了许多方便的数据操作功能,其中之一就是将 DataFrame 数据结构转换为 Python 的基本数据结构列表(List)。本文将详细介绍如何使用 Pandas 将 DataFrame 转换为列表,并提供多个示例代码以供参考。
1. 将整个 DataFrame 转换为列表
DataFrame 可以通过多种方式转换为列表,最直接的方式是使用 values
属性,它会将 DataFrame 中的数据以 numpy 数组的形式返回,然后可以使用 tolist()
方法将其转换为列表。
示例代码 1
import pandas as pd
data = {'Column1': ['pandasdataframe.com', 'example2', 'example3'],
'Column2': [10, 20, 30]}
df = pd.DataFrame(data)
list_result = df.values.tolist()
print(list_result)
Output:
2. 将 DataFrame 的某一列转换为列表
如果只需要将 DataFrame 中的某一列转换为列表,可以直接使用列名进行索引,然后调用 tolist()
方法。
示例代码 2
import pandas as pd
data = {'Column1': ['pandasdataframe.com', 'example2', 'example3'],
'Column2': [10, 20, 30]}
df = pd.DataFrame(data)
column_list = df['Column1'].tolist()
print(column_list)
Output:
3. 使用 apply()
方法转换 DataFrame
apply()
方法可以在 DataFrame 的轴上应用一个函数,通过这种方式,我们可以实现复杂的转换逻辑。
示例代码 3
import pandas as pd
data = {'Column1': ['pandasdataframe.com', 'example2', 'example3'],
'Column2': [10, 20, 30]}
df = pd.DataFrame(data)
list_result = df.apply(list, axis=1)
print(list_result)
Output:
4. 使用 iterrows()
遍历 DataFrame 转换为列表
iterrows()
是一个生成器,它逐行遍历 DataFrame,返回索引和行数据,这样我们可以手动将每行数据转换为列表。
示例代码 4
import pandas as pd
data = {'Column1': ['pandasdataframe.com', 'example2', 'example3'],
'Column2': [10, 20, 30]}
df = pd.DataFrame(data)
list_result = [row.tolist() for index, row in df.iterrows()]
print(list_result)
Output:
5. 使用 itertuples()
遍历 DataFrame 转换为列表
itertuples()
方法会返回一个命名元组的迭代器,每个元组代表 DataFrame 中的一行。这个方法比 iterrows()
更快,因为它不会将行数据转换为 Series。
示例代码 5
import pandas as pd
data = {'Column1': ['pandasdataframe.com', 'example2', 'example3'],
'Column2': [10, 20, 30]}
df = pd.DataFrame(data)
list_result = [list(row) for row in df.itertuples(index=False, name=None)]
print(list_result)
Output:
6. 使用 explode()
将列中的列表元素展开
如果 DataFrame 的某一列包含列表或其他可迭代对象,explode()
方法可以将这些元素展开成多行。
示例代码 6
import pandas as pd
data = {'Column1': [['pandasdataframe.com', 'example2'], ['example3', 'example4']],
'Column2': [10, 20]}
df = pd.DataFrame(data)
exploded_list = df.explode('Column1')['Column1'].tolist()
print(exploded_list)
Output:
7. 结合 groupby()
和 agg()
转换为列表
通过 groupby()
方法对数据进行分组,并使用 agg()
方法聚合每个组的数据到列表中。
示例代码 7
import pandas as pd
data = {'Group': ['A', 'A', 'B', 'B'],
'Column1': ['pandasdataframe.com', 'example2', 'example3', 'example4']}
df = pd.DataFrame(data)
grouped_list = df.groupby('Group')['Column1'].agg(list)
print(grouped_list)
Output:
8. 使用 pivot_table()
转换并聚合为列表
pivot_table()
方法可以创建一个新的派生表,并可以使用聚合函数,比如将数据聚合成列表。
示例代码 8
import pandas as pd
data = {'Group': ['A', 'A', 'B', 'B'],
'Column1': ['pandasdataframe.com', 'example2', 'example3', 'example4']}
df = pd.DataFrame(data)
pivot_list = df.pivot_table(index='Group', values='Column1', aggfunc=lambda x: list(x))
print(pivot_list)
Output:
9. 结合 concat()
和 tolist()
转换为列表
使用 concat()
方法将多个 DataFrame 连接起来,然后转换为列表。
示例代码 9
import pandas as pd
data1 = {'Column1': ['pandasdataframe.com', 'example2']}
data2 = {'Column1': ['example3', 'example4']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
df_concat = pd.concat([df1, df2])
concat_list = df_concat['Column1'].tolist()
print(concat_list)
Output:
10. 使用 merge()
和 tolist()
转换为列表
通过 merge()
方法将两个 DataFrame 根据某些列合并,然后转换为列表。
示例代码 10
import pandas as pd
data1 = {'Key': ['K1', 'K2'], 'Column1': ['pandasdataframe.com', 'example2']}
data2 = {'Key': ['K1', 'K2'], 'Column2': [10, 20]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
df_merged = pd.merge(df1, df2, on='Key')
merged_list = df_merged['Column1'].tolist()
print(merged_list)
Output: