处理 Pandas DataFrame 中的行和列
数据框是一种二维数据结构,即数据以表格形式按行和列排列。我们可以对行/列执行基本操作,如选择、删除、添加和重命名。
处理列
为了处理列,我们对列执行基本操作,如选择、删除、添加和重命名。
列选择:
为了选择 Pandas DataFrame 中的一列,我们可以通过列名来访问该列。
- Python3
# Import pandas package import pandas as pd
# Define a dictionary containing employee data data = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 'Age':[27, 24, 22, 32], 'Address':['Delhi', 'Kanpur', 'Allahabad', 'Kannauj'], 'Qualification':['Msc', 'MA', 'MCA', 'Phd']}
# Convert the dictionary into DataFrame df = pd.DataFrame(data)
# select two columns print(df[['Name', 'Qualification']]) |
输出:
为了在 Pandas DataFrame 中添加一列,我们可以将新列表声明为一列并添加到现有的 Dataframe 中。
- Python3
# Import pandas package
import pandas as pd
# Define a dictionary containing Students data
data = {'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj'],
'Height': [5.1, 6.2, 5.1, 5.2],
'Qualification': ['Msc', 'MA', 'Msc', 'Msc']}
# Convert the dictionary into DataFrame
df = pd.DataFrame(data)
# Declare a list that is to be converted into a column
address = ['Delhi', 'Bangalore', 'Chennai', 'Patna']
# Using 'Address' as the column name
# and equating it to the list
df['Address'] = address
# Observe the result
print(df)
输出:
为了删除 Pandas DataFrame 中的列,我们可以使用drop()方法。通过删除带有列名的列来删除列。
- Python3
# importing pandas module import pandas as pd
# making data frame from csv file data = pd.read_csv("nba.csv", index_col ="Name" )
# dropping passed columns data.drop(["Team", "Weight"], axis = 1, inplace = True)
# display print(data) |
输出:
如输出图像所示,新输出没有传递的列。由于 axis 设置为 1,因此删除了这些值,并且由于 inplace 为 True,因此在原始数据框中进行了更改。
删除列之前的数据框-
删除列后的数据框-
处理行:
为了处理行,我们可以对行执行基本操作,如选择、删除、添加和重命名。
行选择:
Pandas 提供了一种从数据框中检索行的独特方法。
DataFrame.loc[]
方法用于从 Pandas DataFrame 中检索行。也可以通过将整数位置传递给iloc[]
功能。
- Python
# importing pandas package import pandas as pd
# making data frame from csv file data = pd.read_csv("nba.csv", index_col ="Name")
# retrieving row by loc method first = data.loc["Avery Bradley"] second = data.loc["R.J. Hunter"]
print(first, "\n\n\n", second) |
输出:
如输出图所示,由于两次都只有一个参数,因此返回了两个系列。
为了在 Pandas DataFrame 中添加一行,我们可以将旧数据框与新数据框连接起来。
- Python3
# importing pandas module
import pandas as pd
# making data frame
df = pd.read_csv("nba.csv", index_col ="Name")
df.head(10)
new_row = pd.DataFrame({'Name':'Geeks', 'Team':'Boston', 'Number':3,
'Position':'PG', 'Age':33, 'Height':'6-2',
'Weight':189, 'College':'MIT', 'Salary':99999},
index =[0])
# simply concatenate both dataframes
df = pd.concat([new_row, df]).reset_index(drop = True)
df.head(5)
输出:添加行之前的数据框-
添加行后的数据框
为了删除 Pandas DataFrame 中的一行,我们可以使用 drop() 方法。通过按索引标签删除行来删除行。
- Python3
# importing pandas module import pandas as pd
# making data frame from csv file data = pd.read_csv("nba.csv", index_col ="Name" )
# dropping passed values data.drop(["Avery Bradley", "John Holland", "R.J. Hunter", "R.J. Hunter"], inplace = True)
# display data |
输出:
如输出图像所示,新输出没有传递的值。由于 inplace 为 True,这些值已被删除,并且更改是在原始数据框中进行的。
删除值之前的数据框-
删除值后的数据框-
如何在 Pandas 中获取列名
在分析通常非常庞大的真实数据集时,我们可能需要获取 Pandas 的列名才能执行某些操作。在Pandas 中获取列名的最简单方法是使用 DataFrame 的属性。.columns
让我们通过一个简单的例子来理解:
Python
import pandas as pd
data = pd.DataFrame({
'Name': ['Avery Bradley', 'Jae Crowder', 'John Holland'],
'Team': ['Boston Celtics'] * 3,
'Number': [0.0, 99.0, 30.0],
})
# Get column names
column_names = data.columns
print(column_names)
输出:
Index(['Name', 'Team', 'Number'], dtype='object')
这将返回一个 包含所有列名的 Index 对象。如果您需要以列表形式显示列名,可以使用tolist() 方法或Python 的内置list() 函数转换此 Index 对象。
Python
column_names = list(data.columns)
print(column_names)
# Output: ['Name', 'Team', 'Number']
# 输出:['姓名', '团队', '号码']
在本文中,我们将深入探讨访问列名的不同方法并讨论它们的用例。此外,我们将扩展 DataFrame 大小以更好地反映真实场景。
- 从 Pandas DataFrame 列中获取列表
- 使用 keys() 获取 Pandas 中的列名
- 获取 Pandas 中的列名 column.values
- 使用 tolist() 方法列出 Pandas 列名
- Pandas 使用 sorted() 方法打印列名
Python
import pandas as pd
data = pd.read_csv("https://media.geeksforgeeks.org/wp-content/uploads/nba.csv")
data.head()
输出:
Pandas 中的列名
这里使用的数据集是 NBA 球员统计数据集。它包含有关球员的信息,例如他们的姓名、球队、位置、年龄、身高、体重、大学和薪水。
现在让我们尝试从上面的数据集中获取列名。
使用属性从 Pandas DataFrame 获取列表 columns
我们可以使用 Pandas Dataframe 的 columns 属性以列表的形式从 CSV 文件获取所有列。
Python
list(df.columns)
输出:
Pandas 中的列名
使用 tolist() 方法列出 Pandas 列名
如果您更喜欢使用 Python 列表而不是 Index 对象,则可以使用任一方式轻松地进行转换 。
Python
column_list = df.columns.tolist()
print(column_list)
# Output : ['Name', 'Team', 'Number', 'Position', 'Age', 'Height', 'Weight', 'College', 'Salary']
使用 keys() 方法
Pandas 中的方法是检索列名的另一种方法。它的行为类似于 并返回包含列标签的 Index 对象。 .keys().columns
Python
column_keys = df.keys()
print(column_keys)
输出:
Index(['Name', 'Team', 'Number', 'Position', 'Age', 'Height', 'Weight', 'College', 'Salary'], dtype='object')
用于 .columns.values Numpy 数组输出
如果需要将列名作为 NumPy 数组,则可以通过访问它们 .columns.values。这在使用需要数组的 NumPy 函数时特别有用。
Python
column_array = df.columns.values
print(column_array)
# Output : ['Name' 'Team' 'Number' 'Position' 'Age' 'Height' 'Weight' 'College','Salary']
使用以下方式对列名称进行排序 sorted()
如果您希望列名按字母顺序排列,则可以使用 Python 的内置 sorted() 函数。
Python
sorted_columns = sorted(df.columns)
print(sorted_columns)
# Output : ['Age', 'College', 'Height', 'Name', 'Number', 'Position', 'Salary', 'Team', 'Weight']
迭代列名
有时,您可能需要遍历列名来执行诸如重命名或将函数应用到每一列之类的任务。
Python
for col in df.columns:
print(col)
输出:
Name Team Number Position Age Height Weight College Salary
这种方法允许对每个列名单独执行操作。
关键要点:
- 属性 是访问 Pandas 中 列名的主要方式。.columns
- 您可以根据您的喜好,使用 或 将 的输出转换 .columns 为列表 。.tolist()list()
- 该 方法的 工作原理与类似 ,返回一个 Index 对象。.keys().columns
- 对于 NumPy 数组输出,使用 。.columns.values
- 如果需要已排序列名,请使用 Python 的内置 函数。sorted()
- 您还可以使用简单循环来迭代列 for 。
如何在 Pandas 中获取列名 – 常见问题解答
如何获取 Pandas 中的具体列名?
用于df.columns检索所有列名,或df.columns[column_index]通过索引访问特定列。
如何在 Pandas 中命名列?
在创建 DataFrame 时使用 定义列名pd.DataFrame(data, columns=['col1', 'col2']),或稍后使用 重命名df.columns = ['new_col1', 'new_col2']。
如何获取 Pandas 中的某一列?
df['column_name']通过或访问一列df.column_name。对于多列,使用df[['col1', 'col2']]。
如何定义 DataFrame 中的列?
在创建 DataFrame 期间使用 指定列pd.DataFrame(data, columns=['col1', 'col2'])或分配给df.columns。
如何命名 Pandas 中的第一列?
使用df.columns.values[0] = 'new_name'重命名第一列,或者df.rename(columns={'old_name': 'new_name'})。