Pandas教程之八:处理Pandas DataFrame中的行和列(1)

处理 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'})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潜洋

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值