Pandas 创建 DataFrame 的方法
参考:pandas create dataframe from another dataframe
Pandas 是一个强大的 Python 数据分析库,它提供了许多工具来处理和分析数据。其中,DataFrame 是 Pandas 中最核心的数据结构,它是一个二维的、大小可变的、异质型表格。在实际应用中,我们经常需要从一个已存在的 DataFrame 创建一个新的 DataFrame。本文将详细介绍如何使用 Pandas 从一个 DataFrame 创建另一个 DataFrame,并提供多个示例代码。
1. 直接复制 DataFrame
最简单的创建新 DataFrame 的方法是直接复制一个已存在的 DataFrame。这可以通过使用 copy()
方法实现。
import pandas as pd
# 创建一个原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df_original = pd.DataFrame(data)
# 复制 DataFrame
df_new = df_original.copy()
print(df_new)
Output:
2. 选择特定的列创建新 DataFrame
如果你只需要原始 DataFrame 中的某些列,可以通过列名来选择这些列创建新的 DataFrame。
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']}
df_original = pd.DataFrame(data)
# 选择特定的列
df_new = df_original[['Name', 'Age']]
print(df_new)
Output:
3. 使用条件过滤创建新 DataFrame
通过对原始 DataFrame 应用条件过滤,可以创建包含特定行的新 DataFrame。
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']}
df_original = pd.DataFrame(data)
# 应用条件过滤
df_new = df_original[df_original['Age'] > 25]
print(df_new)
Output:
4. 使用 loc
和 iloc
选择器
loc
和 iloc
选择器可以用来从原始 DataFrame 中选择行和列,创建新的 DataFrame。
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']}
df_original = pd.DataFrame(data)
# 使用 loc 选择器
df_new = df_original.loc[:, ['Name', 'City']]
print(df_new)
Output:
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']}
df_original = pd.DataFrame(data)
# 使用 iloc 选择器
df_new = df_original.iloc[:, [0, 2]]
print(df_new)
Output:
5. 使用 drop
方法删除列
有时候,我们需要从原始 DataFrame 中删除某些列来创建新的 DataFrame。
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']}
df_original = pd.DataFrame(data)
# 删除列
df_new = df_original.drop(columns=['Age'])
print(df_new)
Output:
6. 使用 assign
方法添加新列
assign
方法可以用来向 DataFrame 添加新的列。
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df_original = pd.DataFrame(data)
# 添加新列
df_new = df_original.assign(City=['New York', 'Los Angeles', 'Chicago'])
print(df_new)
Output:
7. 使用 query
方法进行复杂条件过滤
query
方法允许你使用字符串表达式来过滤 DataFrame。
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']}
df_original = pd.DataFrame(data)
# 使用 query 方法
df_new = df_original.query("Age >= 30 and City == 'Los Angeles'")
print(df_new)
Output:
8. 使用 merge
方法合并 DataFrame
如果你有两个相关的 DataFrame,可以使用 merge
方法将它们合并为一个新的 DataFrame。
import pandas as pd
# 创建两个 DataFrame
data1 = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
data2 = {'Name': ['Alice', 'Bob'], 'City': ['New York', 'Los Angeles']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# 合并 DataFrame
df_new = pd.merge(df1, df2, on='Name')
print(df_new)
Output:
9. 使用 concat
方法连接 DataFrame
concat
方法可以用来在轴向上连接多个 DataFrame。
import pandas as pd
# 创建两个 DataFrame
data1 = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
data2 = {'Name': ['Charlie', 'David'], 'Age': [35, 40]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# 连接 DataFrame
df_new = pd.concat([df1, df2], ignore_index=True)
print(df_new)
Output:
10. 使用 groupby
和 agg
方法进行分组和聚合
通过 groupby
方法可以对 DataFrame 进行分组,并使用 agg
方法进行聚合操作,从而创建新的 DataFrame。
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Alice', 'Bob'], 'Score': [85, 90, 95, 88]}
df_original = pd.DataFrame(data)
# 分组并聚合
df_new = df_original.groupby('Name').agg({'Score': 'mean'})
print(df_new)
Output:
以上是从一个 DataFrame 创建另一个 DataFrame 的一些常用方法和示例。通过这些方法,你可以灵活地处理和分析数据。