如何在Pandas中创建空DataFrame并添加行和列?

如何在Pandas中创建空DataFrame并添加行和列?

Pandas是一个Python库,可以方便地处理海量数据。在Pandas中,DataFrame是一种二维表格数据结构,可以看做是由多个Series组成的,每个Series代表了一列数据。在实际的数据处理中,我们有时需要创建一个空的DataFrame,并动态地添加行和列。本文将介绍如何在Pandas中创建空的DataFrame,并演示如何添加行和列。

创建空的DataFrame

在Pandas中,创建一个空的DataFrame非常简单,只需要调用DataFrame构造函数即可,不过需要注意的是,创建空的DataFrame需要指定列名和数据类型。

import pandas as pd

# 创建空的DataFrame
df = pd.DataFrame(columns=['name', 'age', 'gender'], dtype=int)

# 查看DataFrame的信息
print(df.info())

输出结果为:

<class 'pandas.core.frame.DataFrame'>
Index: 0 entries
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   name    0 non-null      int64
 1   age     0 non-null      int64
 2   gender  0 non-null      int64
dtypes: int64(3)
memory usage: 0.0+ bytes
None

可以看到,创建的DataFrame没有任何行数据,但是已经定义好了三列,分别为nameagegender,数据类型为整型。注意,这里的列名和数据类型是可选的,如果不指定的话,Pandas会自动进行推断,但是推断的结果可能不是我们期望的。因此,建议在创建空的DataFrame时,明确指定列名和数据类型。

添加行

在上面的示例中,我们创建了一个空的DataFrame,接下来我们将演示如何添加行数据。在Pandas中,添加行数据有两种方式,一种是通过loc属性,另一种是通过append方法。

通过loc属性添加行

loc是Pandas中一个用于标签索引的属性,通过它可以方便地添加一行数据。示例如下:

import pandas as pd

# 创建空的DataFrame
df = pd.DataFrame(columns=['name', 'age', 'gender'])

# 通过loc属性添加行数据
df.loc[0] = ['Alice', 18, 'female']
df.loc[1] = ['Bob', 21, 'male']
df.loc[2] = ['Cathy', 25, 'female']

# 查看DataFrame的内容
print(df)

输出结果为:

    name age  gender
0  Alice  18  female
1    Bob  21    male
2  Cathy  25  female

可以看到,我们成功地向空的DataFrame中添加了三行数据。

需要注意的是,在使用loc属性添加行数据时,需要指定行标签,也就是index。如果行标签已经存在,则会修改相应行的数据;如果行标签不存在,则会新建一行,并填充数据。

通过append方法添加行

另一种添加行数据的方式是使用append方法。append方法可以接受一个字典、一个Series或一个DataFrame作为参数,它会将参数中的数据作为一行添加到原DataFrame的末尾。示例如下:

import pandas as pd

# 创建空的DataFrame
df = pd.DataFrame(columns=['name', 'age', 'gender'])

# 通过append方法添加行数据
df = df.append({'name': 'Alice', 'age': 18, 'gender': 'female'}, ignore_index=True)
df = df.append({'name': 'Bob', 'age': 21, 'gender': 'male'}, ignore_index=True)
df = df.append({'name': 'Cathy', 'age': 25, 'gender': 'female'}, ignore_index=True)

# 查看DataFrame的内容
print(df)

输出结果同上。

需要注意的是,在使用append方法添加行数据时,需要将ignore_index参数设置为True,这是因为append方法默认会保留原DataFrame的索引,如果不将ignore_index设置为True`,则新添加的行数据的索引会和原DataFrame的索引重复,导致索引冲突,因此需要将新添加的行数据的索引重新编号。

添加列

除了添加行数据,有时我们也需要添加列数据。在Pandas中,添加列数据非常简单,只需要通过列名即可。示例如下:

import pandas as pd

# 创建空的DataFrame
df = pd.DataFrame(columns=['name', 'age', 'gender'])

# 添加列数据
df['height'] = [170, 175, 165]

# 查看DataFrame的内容
print(df)

输出结果为:

    name age  gender  height
0    NaN NaN     NaN     170
1    NaN NaN     NaN     175
2    NaN NaN     NaN     165

可以看到,我们成功地向空的DataFrame中添加了一列数据,列名为height,数据分别为170、175、165。

需要注意的是,添加列数据时,数据的长度必须和DataFrame的行数相同,否则会报错。如果数据长度大于行数,则多出来的数据会被忽略;如果数据长度小于行数,则会报错。

修改行和列数据

更新DataFrame中的数据可以使用atiatlociloc等属性或方法。其中,atiat用于精确定位单个元素,lociloc用于选择多个元素。

修改单个元素

如果要修改DataFrame中的单个元素,可以使用atiat属性。atiat的用法类似,但是at用于使用行标签和列标签定位元素,iat用于使用行索引和列索引定位元素。

示例如下:

import pandas as pd

# 创建DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Cathy'], 'age': [18, 21, 25], 'gender': ['female', 'male', 'female']})

# 查看DataFrame的内容
print(df)

# 修改单个元素
df.at[1, 'age'] = 22
df.iat[2, 0] = 'David'

# 查看DataFrame的内容
print(df)

修改前的输出结果为:

    name  age  gender
0  Alice   18  female
1    Bob   21    male
2  Cathy   25  female

修改后的输出结果为:

    name  age  gender
0  Alice   18  female
1    Bob   22    male
2  David  25  female

可以看到,我们成功地将第二行的年龄修改为22,将第三行的名字修改为David。

修改多个元素

如果要同时修改多个元素,可以使用lociloc属性或方法选择多个元素。lociloc的用法类似,但是loc用于使用行标签和列标签选择元素,iloc用于使用行索引和列索引选择元素。

示例如下:

import pandas as pd

# 创建DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Cathy'], 'age': [18, 21, 25], 'gender': ['female', 'male', 'female']})

# 查看DataFrame的内容
print(df)

# 修改多个元素
df.loc[1:2, 'age':'gender'] = [[22, 'male'], [23, 'male']]

# 查看DataFrame的内容
print(df)

修改前的输出结果为:

    name  age  gender
0  Alice   18  female
1    Bob   21    male
2  Cathy   25  female

修改后的输出结果为:

    name  age  gender
0  Alice   18  female
1    Bob   22    male
2  Cathy   23    male

可以看到,我们成功地将第二、三行的年龄和性别修改了。

需要注意的是,在使用lociloc选择多个元素时,语法和切片语法类似,但不包含右端点,即选择的元素为左端点到右端点前一个元素。此外,选择元素时可以使用布尔数组,将指定位置的元素选取出来。

删除行和列

如果要删除DataFrame中的行或列,可以使用drop方法或del语句。drop方法用于删除行或列,而del语句仅用于删除列。

删除行

要删除DataFrame中的行,可以使用drop方法,示例如下:

import pandas as pd

# 创建DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Cathy'], 'age': [18, 21, 25], 'gender': ['female', 'male', 'female']})

# 查看DataFrame的内容
print(df)

# 删除第二行
df = df.drop(1)

# 查看DataFrame的内容
print(df)

删除前的输出结果为:

    name  age  gender
0  Alice   18  female
1    Bob   21    male
2  Cathy   25  female

删除后的输出结果为:

    name  age  gender
0  Alice   18  female
2  Cathy   25  female

可以看到,我们成功地删除了第二行。

需要注意的是,drop方法返回一个新的DataFrame,原DataFrame并没有被修改。如果要在原DataFrame上直接删除行,可以使用inplace参数,将其设置为True

删除列

要删除DataFrame中的列,可以使用drop方法或del语句。使用drop方法删除列时,需要将axis参数设置为1,示例如下:

import pandas as pd

# 创建DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Cathy'], 'age': [18, 21, 25], 'gender': ['female', 'male', 'female']})

# 查看DataFrame的内容
print(df)

# 删除age列
df = df.drop('age', axis=1)

# 查看DataFrame的内容
print(df)

删除前的输出结果为:

    name  age  gender
0  Alice   18  female
1    Bob   21    male
2  Cathy   25  female

删除后的输出结果为:

    name  gender
0  Alice  female
1    Bob    male
2  Cathy  female

可以看到,我们成功地删除了age列。

使用del语句删除列时,只需要指定要删除的列名即可,示例如下:

import pandas as pd

# 创建DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Cathy'], 'age': [18, 21, 25], 'gender': ['female', 'male', 'female']})

# 查看DataFrame的内容
print(df)

# 删除age列
del df['age']

# 查看DataFrame的内容
print(df)

删除前的输出结果同上,删除后的输出结果同上。

需要注意的是,无论是使用drop方法还是del语句删除列,都不能直接删除多列。如果要删除多列,可以使用切片语法,或多次调用drop方法。

结论

在本文中,我们演示了如何在Pandas中创建空的DataFrame,并添加行和列。同时,我们还介绍了如何修改DataFrame中的行和列数据,以及如何删除DataFrame中的行和列。这些操作是Pandas中基本的数据处理技巧,也是进行数据分析和建模的基础。希望本文能帮助您更好地掌握Pandas的使用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程