如何在 Pandas DataFrame 中添加列
参考:pandas dataframe add column
在数据分析和数据处理中,Pandas 是 Python 最常用的库之一。Pandas 提供了 DataFrame 对象,它是一个强大的二维数据结构,类似于 Excel 表格。在处理 DataFrame 时,我们经常需要添加新的列来存储计算结果或合并数据。本文将详细介绍如何在 Pandas DataFrame 中添加列,包括多种不同的方法和场景。
1. 使用赋值操作添加列
最基本的添加列方法是使用赋值操作。这种方法直接在 DataFrame 上创建一个新列,并为其赋值。
示例代码 1
import pandas as pd
# 创建一个简单的DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 直接通过赋值添加新列
df['C'] = [7, 8, 9]
print(df)
Output:
2. 使用 .insert()
方法添加列
如果你需要在 DataFrame 中的特定位置插入列,可以使用 .insert()
方法。这个方法允许你指定列的插入位置、列名和数据。
示例代码 2
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 在第一列位置插入新列
df.insert(1, 'NewColumn', [10, 20, 30])
print(df)
Output:
3. 使用 .assign()
方法添加列
.assign()
方法可以链式添加多个新列,这个方法返回一个新的 DataFrame,原始 DataFrame 不会被修改。
示例代码 3
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 使用.assign()添加新列
new_df = df.assign(C=[7, 8, 9], D=[10, 11, 12])
print(new_df)
Output:
4. 使用计算结果添加列
在数据处理过程中,我们经常需要根据现有的数据计算新的数据列。
示例代码 4
import pandas as pd
df = pd.DataFrame({
'A': [10, 20, 30],
'B': [40, 50, 60]
})
# 添加新列,该列是现有两列的和
df['Sum'] = df['A'] + df['B']
print(df)
Output:
5. 使用条件表达式添加列
有时候,我们需要根据条件给新列赋值。
示例代码 5
import pandas as pd
df = pd.DataFrame({
'A': [10, 20, 30],
'B': [40, 50, 60]
})
# 添加新列,根据条件赋值
df['Condition'] = ['High' if x > 25 else 'Low' for x in df['A']]
print(df)
Output:
6. 使用 .map()
或 .apply()
方法添加列
当需要对 DataFrame 中的数据进行更复杂的转换时,可以使用 .map()
或 .apply()
方法。
示例代码 6
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 使用.map()添加新列
df['A_squared'] = df['A'].map(lambda x: x**2)
print(df)
Output:
示例代码 7
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 使用.apply()在整个DataFrame上添加新列
df['Sum'] = df.apply(lambda row: row['A'] + row['B'], axis=1)
print(df)
Output:
7. 使用外部数据添加列
在实际应用中,我们可能需要根据外部数据源来添加列。这可能涉及到数据的合并或映射。
示例代码 8
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
external_data = {1: 'one', 2: 'two', 3: 'three'}
# 使用外部字典添加新列
df['A_ext'] = df['A'].map(external_data)
print(df)
Output:
8. 使用 .merge()
方法添加列
当需要根据另一个 DataFrame 的数据添加列时,可以使用 .merge()
方法。
示例代码 9
import pandas as pd
df1 = pd.DataFrame({
'Key': [1, 2, 3],
'Value': [4, 5, 6]
})
df2 = pd.DataFrame({
'Key': [1, 2, 3],
'Description': ['A', 'B', 'C']
})
# 使用.merge()根据'Key'合并数据并添加新列
result_df = df1.merge(df2, on='Key')
print(result_df)
Output:
9. 使用时间序列数据添加列
在处理时间序列数据时,我们经常需要根据日期或时间添加新的列。
示例代码 10
import pandas as pd
df = pd.DataFrame({
'Date': pd.date_range(start='1/1/2020', periods=3),
'Value': [1, 2, 3]
})
# 添加新列,为每个日期添加年份
df['Year'] = df['Date'].dt.year
print(df)
Output:
10. 使用分组统计数据添加列
在某些情况下,我们需要根据分组的统计数据来添加列。
示例代码 11
import pandas as pd
df = pd.DataFrame({
'Category': ['A', 'A', 'B', 'B'],
'Value': [10, 20, 30, 40]
})
# 添加新列,为每个类别计算平均值
df['Average'] = df.groupby('Category')['Value'].transform('mean')
print(df)
Output:
总结
在本文中,我们详细介绍了在 Pandas DataFrame 中添加列的多种方法,包括直接赋值、使用插入方法、计算结果、条件表达式、映射、合并和时间序列等。这些方法可以帮助你在数据处理和分析中灵活地扩展和丰富你的数据集。