如何从 Pandas 数据帧列或行中轻松提取列表?
2024-03-14 13:00:01
从 Pandas 数据帧列或行中提取列表:全面指南
前言
在数据分析和操作中,经常需要将 Pandas 数据帧中的数据提取到列表中,以便进行进一步的处理或可视化。本文将深入探讨如何从数据帧的列或行中提取列表,并提供丰富的示例代码和实用技巧,帮助你轻松掌握这一重要技术。
从列中提取列表
要从数据帧的特定列中提取列表,可以使用 tolist()
方法:
# 获取列名为 'cluster' 的列表
cluster_list = df['cluster'].tolist()
此方法将创建包含所有 cluster
列值的列表,可以方便地对其进行迭代或操作。
从行中提取列表
要从数据帧的特定行中提取列表,可以使用 iloc
方法:
# 获取索引为 1 的行的列表
row1_list = df.iloc[1].tolist()
此方法将创建一个包含行 1 中所有值(包括 NaN)的列表。
获取整个列或行的列表
要获取整个列或行的列表,可以使用 values.tolist()
方法:
# 获取 'cluster' 列的列表
cluster_list = df['cluster'].values.tolist()
# 获取索引为 1 的行的列表
row1_list = df.iloc[1].values.tolist()
与 tolist()
方法类似,values.tolist()
方法返回一个 Python 列表,但它仅包含非 NaN 值。
示例
为了演示这些方法,让我们使用以下示例数据帧 df
:
import pandas as pd
df = pd.DataFrame({
'cluster': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
'load_date': ['1/1/2014', '2/1/2014', '3/1/2014', '4/1/2014', '4/1/2014', '4/1/2014', '7/1/2014', '8/1/2014', '9/1/2014'],
'budget': [1000, 12000, 36000, 15000, 12000, 90000, 22000, 30000, 53000],
'actual': [4000, 10000, 2000, 10000, 11500, 11000, 18000, 28960, 51200],
'fixed_price': ['Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', 'N']
})
获取 cluster
列的列表:
cluster_list = df['cluster'].tolist()
print(cluster_list)
输出:
['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']
获取索引为 1 的行的列表:
row1_list = df.iloc[1].tolist()
print(row1_list)
输出:
['A', '2/1/2014', 12000, 10000, 'Y']
结论
从 Pandas 数据帧列或行中提取列表是数据分析和处理中的一项基本操作。通过使用 tolist()
、iloc
和 values.tolist()
方法,你可以轻松地提取所需的列表,从而进一步分析数据或创建可视化。
常见问题解答
1. 如何提取特定索引范围的行列表?
可以使用 iloc
方法并指定索引范围,例如:
row_list = df.iloc[0:3].tolist() # 提取前三行
2. 如何提取包含特定值的行的列表?
可以使用 query()
方法过滤数据帧,然后使用 tolist()
方法提取行的列表,例如:
row_list = df.query("cluster == 'A'").tolist() # 提取 cluster 值为 'A' 的行
3. 如何提取特定列的非 NaN 值列表?
使用 dropna()
方法删除 NaN 值,然后使用 tolist()
方法提取列的列表,例如:
column_list = df['column_name'].dropna().tolist() # 提取不包含 NaN 值的 column_name 列
4. 如何提取行中特定列的列表?
使用 loc
方法指定行和列,然后使用 tolist()
方法提取特定列的列表,例如:
row_column_list = df.loc[0, 'cluster'].tolist() # 提取第一行中 cluster 列的值
5. 如何从多列中提取值的列表?
使用 [[]]
来指定要提取的列,然后使用 tolist()
方法提取值的列表,例如:
multi_column_list = df[['cluster', 'budget']].tolist() # 提取 cluster 和 budget 列的值