如何使用 Pandas 在 DataFrame 中添加列
参考:pandas append column to dataframe
在数据处理和分析中,经常需要对数据集进行修改或扩展,比如添加新的列。Pandas 是 Python 中一个强大的数据处理库,它提供了多种方式来对 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. 使用 assign
方法添加列
assign
方法可以在不修改原始 DataFrame 的基础上,返回一个新的 DataFrame,其中包含了添加的新列。
示例代码 2
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 使用assign添加新列
new_df = df.assign(C=[7, 8, 9])
print(new_df)
Output:
3. 根据现有列计算添加新列
在实际应用中,新列的数据可能是基于现有列计算得出的。这时,可以直接通过赋值将计算结果作为新列。
示例代码 3
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 添加新列,该列是现有两列的和
df['C'] = df['A'] + df['B']
print(df)
Output:
4. 使用 insert
方法插入列
如果你需要在特定的位置插入列,可以使用 insert
方法。这个方法允许你指定新列的插入位置。
示例代码 4
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 在第一列位置插入新列
df.insert(1, 'C', [7, 8, 9])
print(df)
Output:
5. 使用字典添加多列
如果需要同时添加多个列,可以使用字典批量添加。
示例代码 5
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 同时添加多个列
df = df.assign(**{'C': [7, 8, 9], 'D': [10, 11, 12]})
print(df)
Output:
6. 使用 concat
方法添加列
当你有另一个 DataFrame 或 Series,并希望将其作为列添加到现有 DataFrame 时,可以使用 concat
方法。
示例代码 6
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
new_col = pd.Series([7, 8, 9], name='C')
# 使用concat添加列
df = pd.concat([df, new_col], axis=1)
print(df)
Output:
7. 使用 merge
方法添加列
如果新添加的列依赖于另一个 DataFrame 中的数据,并且需要根据某些键进行合并,可以使用 merge
方法。
示例代码 7
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
new_data = pd.DataFrame({
'A': [1, 2, 3],
'C': [7, 8, 9]
})
# 使用merge根据'A'列合并数据
df = pd.merge(df, new_data, on='A')
print(df)
Output:
8. 使用 join
方法添加列
join
方法类似于 merge
,但它默认使用索引作为连接键。这对于索引对齐的数据添加特别有用。
示例代码 8
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
new_data = pd.DataFrame({
'C': [7, 8, 9]
}, index=[0, 1, 2])
# 使用join添加列
df = df.join(new_data)
print(df)
Output:
9. 使用 update
方法更新列
如果你需要更新 DataFrame 中已存在的列的值,可以使用 update
方法。
示例代码 9
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
new_values = pd.DataFrame({
'B': [7, 8, 9]
}, index=[0, 1, 2])
# 使用update更新列'B'
df.update(new_values)
print(df)
Output:
10. 使用 eval
方法动态添加列
eval
方法允许你使用字符串表达式动态计算新列的值。
示例代码 10
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 使用eval添加新列'C',其值为'A'和'B'的和
df.eval('C = A + B', inplace=True)
print(df)
Output:
以上是使用 Pandas 在 DataFrame 中添加列的十种常见方法。每种方法都有其适用场景和优缘势,选择合适的方法可以使数据处理更加高效和灵活。