如何在 Pandas 的 DataFrame 中添加列
参考:pandas dataframe add column
在数据分析和数据处理过程中,经常需要对数据进行修改或增加新的信息。Pandas 是 Python 中一个非常流行的数据处理库,它提供了非常丰富的数据结构和操作方法。本文将详细介绍如何在 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. 根据现有列计算添加新列
在实际应用中,我们经常需要根据 DataFrame 中现有的列来计算新的列。
示例代码 3
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 添加新列C,其为列A和列B的和
df['C'] = df['A'] + df['B']
print(df)
Output:
4. 使用 insert
方法指定列的位置
如果你想在 DataFrame 中的特定位置插入列,可以使用 insert
方法。
示例代码 4
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 在索引为1的位置插入新列C
df.insert(1, 'C', [7, 8, 9])
print(df)
Output:
5. 使用 concat
方法添加列
当你有多个 DataFrame 或者 Series 需要合并时,concat
方法是一个非常有用的工具。
示例代码 5
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
new_column = pd.Series([7, 8, 9], name='C')
# 使用concat方法添加列
df = pd.concat([df, new_column], axis=1)
print(df)
Output:
6. 使用 merge
方法添加列
merge
方法通常用于根据一个或多个键将不同的 DataFrame 合并起来,但它也可以用来添加列。
示例代码 6
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
new_column = pd.DataFrame({
'A': [1, 2, 3],
'C': [7, 8, 9]
})
# 使用merge方法添加列,根据列A进行合并
df = pd.merge(df, new_column, on='A')
print(df)
Output:
7. 使用 map
方法根据映射添加列
map
方法可以根据一个映射关系或函数,将一个 Series 中的值转换成另外的值。
示例代码 7
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
mapping = {1: 'one', 2: 'two', 3: 'three'}
# 使用map方法根据映射关系添加列C
df['C'] = df['A'].map(mapping)
print(df)
Output:
8. 使用 apply
方法添加列
apply
方法可以对 DataFrame 的行或列应用一个函数,非常灵活。
示例代码 8
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 使用apply方法添加列C,其为列A的两倍
df['C'] = df['A'].apply(lambda x: x * 2)
print(df)
Output:
9. 使用条件表达式添加列
有时候我们需要根据条件来添加列,这可以通过 numpy 的 where
方法来实现。
示例代码 9
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 使用条件表达式添加列C
df['C'] = np.where(df['A'] > 2, 'high', 'low')
print(df)
Output:
10. 使用 eval
方法添加列
eval
方法允许 DataFrame 执行字符串表达式,这在动态构建表达式时非常有用。
示例代码 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 中添加列的一些常见方法。每种方法都有其适用场景,选择合适的方法可以使数据处理更加高效和灵活。