📜  从现有数据框 pandas 创建新数据框 - Python (1)

📅  最后修改于: 2023-12-03 14:49:26.514000             🧑  作者: Mango

从现有数据框 pandas 创建新数据框 - Python

在使用 Python 进行数据分析的过程中,我们经常需要创建新的数据框(DataFrame)用于存储分析结果或将数据重组。本文将介绍如何基于现有数据框创建新的数据框,以及如何操作新数据框来满足我们的需求。

创建新数据框
按列选择

一种基于现有数据框创建新数据框的方式是按列选择。例如我们有一个数据框 df,它包含了学生的成绩和课程信息:

import pandas as pd

df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'math': [90, 85, 80, 95],
    'english': [95, 90, 85, 80],
    'science': [80, 85, 90, 95],
    'course': ['math', 'english', 'science', 'math']
})

print(df)

输出:

       name  math  english  science   course
0     Alice    90       95       80     math
1       Bob    85       90       85  english
2   Charlie    80       85       90  science
3     David    95       80       95     math

我们可以通过选择列来创建新的数据框。例如,我们想创建一个只包含数学成绩和课程信息的数据框:

new_df = df[['math', 'course']]
print(new_df)

输出:

   math   course
0    90     math
1    85  english
2    80  science
3    95     math
按行选择

类似地,我们也可以按行选择创建新的数据框。例如,我们想创建一个只包含第一行和第三行的数据框:

new_df = df.iloc[[0, 2]]
print(new_df)

输出:

      name  math  english  science   course
0    Alice    90       95       80     math
2  Charlie    80       85       90  science
筛选数据

我们可以通过筛选数据来创建新的数据框。例如,我们要创建一个只包含数学成绩大于 85 的数据框:

new_df = df[df['math'] > 85]
print(new_df)

输出:

    name  math  english  science course
0  Alice    90       95       80   math
3  David    95       80       95   math
拼接数据

我们还可以将多个数据框拼接成一个新的数据框。例如,我们有两个数据框 df1 和 df2:

df1 = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'math': [90, 85, 80, 95],
    'english': [95, 90, 85, 80],
})

df2 = pd.DataFrame({
    'name': ['Ella', 'Frank', 'Grace', 'Henry'],
    'math': [75, 80, 85, 90],
    'science': [90, 85, 80, 75],
})

我们可以使用 concat 函数将它们拼接起来:

new_df = pd.concat([df1, df2])
print(new_df)

输出:

      name  math  english  science
0    Alice    90     95.0      NaN
1      Bob    85     90.0      NaN
2  Charlie    80     85.0      NaN
3    David    95     80.0      NaN
0     Ella    75      NaN     90.0
1    Frank    80      NaN     85.0
2    Grace    85      NaN     80.0
3    Henry    90      NaN     75.0
修改数据

最后,我们还可以对新数据框进行修改,以满足我们的需求。例如,我们要将新数据框中的空值填充为 0:

new_df = new_df.fillna(0)
print(new_df)

输出:

      name  math  english  science
0    Alice    90     95.0      0.0
1      Bob    85     90.0      0.0
2  Charlie    80     85.0      0.0
3    David    95     80.0      0.0
0     Ella    75      0.0     90.0
1    Frank    80      0.0     85.0
2    Grace    85      0.0     80.0
3    Henry    90      0.0     75.0
结论

本文介绍了如何基于现有数据框创建新数据框,并对新数据框进行操作。通过运用这些方法,我们可以轻松地处理和分析数据。