Pandas 创建 DataFrame 的方法
参考:pandas create dataframe from another dataframe
Pandas 是一个强大的 Python 数据分析库,它提供了许多工具来处理和分析数据。其中,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 中的某些列。可以通过列名来选择需要的列。
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', 'City']]
print(df_new)
Output:
3. 使用条件过滤创建新的 DataFrame
我们可以根据条件过滤数据,创建包含特定行的新 DataFrame。
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df_original = pd.DataFrame(data)
# 条件过滤
df_new = df_original[df_original['Age'] > 25]
print(df_new)
Output:
4. 使用 loc
和 iloc
选择器
loc
和 iloc
选择器可以用来选择特定的行和列,创建新的 DataFrame。
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df_original = pd.DataFrame(data)
# 使用 loc 选择器
df_new = df_original.loc[df_original['Age'] > 25, ['Name']]
print(df_new)
Output:
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df_original = pd.DataFrame(data)
# 使用 iloc 选择器
df_new = df_original.iloc[0:2]
print(df_new)
Output:
5. 基于索引的选择
有时候,我们可能需要根据索引来创建新的 DataFrame。
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df_original = pd.DataFrame(data, index=['a', 'b', 'c'])
# 基于索引的选择
df_new = df_original.loc['b':'c']
print(df_new)
Output:
6. 使用 where
方法
where
方法可以用来根据条件过滤数据,未满足条件的行将被填充为 NaN。
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df_original = pd.DataFrame(data)
# 使用 where 方法
df_new = df_original.where(df_original['Age'] > 25)
print(df_new)
Output:
7. 使用 query
方法
query
方法提供了一种更易读的方式来选择数据。
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df_original = pd.DataFrame(data)
# 使用 query 方法
df_new = df_original.query('Age > 25')
print(df_new)
Output:
8. 使用 groupby
后选择
有时候,我们需要根据某些键对数据进行分组,然后再从每个组中选择数据。
import pandas as pd
# 创建原始 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'Alice'], 'Age': [25, 30, 35, 25], 'Score': [88, 92, 85, 90]}
df_original = pd.DataFrame(data)
# 使用 groupby 方法
grouped = df_original.groupby('Name')
df_new = grouped.get_group('Alice')
print(df_new)
Output:
9. 使用 merge
创建新的 DataFrame
通过合并两个 DataFrame,我们可以创建一个包含两者数据的新 DataFrame。
import pandas as pd
# 创建两个 DataFrame
data1 = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
data2 = {'Name': ['Charlie', 'Alice'], 'City': ['Chicago', 'New York']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# 合并 DataFrame
df_new = pd.merge(df1, df2, on='Name', how='inner')
print(df_new)
Output:
10. 使用 concat
合并 DataFrame
concat
函数可以用来在轴向上合并多个 DataFrame。
import pandas as pd
# 创建两个 DataFrame
data1 = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
data2 = {'Name': ['Charlie', 'Alice'], 'Age': [35, 25]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# 合并 DataFrame
df_new = pd.concat([df1, df2])
print(df_new)
Output:
以上是使用 Pandas 从一个已存在的 DataFrame 创建新 DataFrame 的一些常见方法。每种方法都有其特定的应用场景,选择合适的方法可以使数据处理更加高效和方便。