pandas向 DataFrame 中添加列
参考:pandas append column to dataframe
在数据分析和数据处理中,pandas 是 Python 中最常用的库之一。它提供了大量的功能来操作和分析数据。本文将详细介绍如何使用 pandas 库在 DataFrame 中添加列,这是在数据处理过程中非常常见的需求。我们将通过多个示例代码来展示不同的方法和技巧,帮助你有效地向 DataFrame 中添加列。
1. 使用 assign
方法添加列
assign
方法是向 DataFrame 添加新列的一种便捷方式。它不会修改原始 DataFrame,而是返回一个新的 DataFrame。
import pandas as pd
df = pd.DataFrame({
'A': range(1, 6),
'B': ['pandasdataframe.com' for _ in range(5)]
})
new_df = df.assign(C=lambda x: x['A'] * 2)
print(new_df)
Output:
2. 直接使用列索引添加列
你也可以直接使用列索引来添加新列。如果列不存在,它将被创建。
import pandas as pd
df = pd.DataFrame({
'A': range(1, 6),
'B': ['pandasdataframe.com' for _ in range(5)]
})
df['C'] = df['A'] + 10
print(df)
Output:
3. 使用 insert
方法添加列
使用 insert
方法可以在 DataFrame 中指定的位置插入列。这个方法会修改原始 DataFrame。
import pandas as pd
df = pd.DataFrame({
'A': range(1, 6),
'B': ['pandasdataframe.com' for _ in range(5)]
})
df.insert(1, 'C', df['A'] * 3)
print(df)
Output:
4. 使用 concat
函数添加列
concat
函数可以用来在 DataFrame 的列方向上添加数据。
import pandas as pd
df = pd.DataFrame({
'A': range(1, 6),
'B': ['pandasdataframe.com' for _ in range(5)]
})
new_col = pd.Series(['new' + str(i) for i in range(5)], name='C')
df = pd.concat([df, new_col], axis=1)
print(df)
Output:
5. 使用 merge
方法添加列
merge
方法通常用于根据一个或多个键将不同的 DataFrame 合并在一起,但也可以用来添加列。
import pandas as pd
df = pd.DataFrame({
'A': range(1, 6),
'B': ['pandasdataframe.com' for _ in range(5)]
})
new_col = pd.DataFrame({
'A': range(1, 6),
'C': ['new' + str(i) for i in range(5)]
})
df = pd.merge(df, new_col, on='A')
print(df)
Output:
6. 使用 join
方法添加列
join
方法是另一种在 DataFrame 中添加列的方法,它基于索引来合并数据。
import pandas as pd
df = pd.DataFrame({
'A': range(1, 6),
'B': ['pandasdataframe.com' for _ in range(5)]
})
new_col = pd.DataFrame({
'C': ['new' + str(i) for i in range(5)]
}, index=[0, 1, 2, 3, 4])
df = df.join(new_col)
print(df)
Output:
7. 使用 update
方法添加列
update
方法可以用来更新 DataFrame 的列,如果列不存在,则会添加新列。
import pandas as pd
df = pd.DataFrame({
'A': range(1, 6),
'B': ['pandasdataframe.com' for _ in range(5)]
})
new_col = pd.DataFrame({
'C': ['update' + str(i) for i in range(5)]
})
df.update(new_col)
print(df)
Output:
8. 使用 eval
方法动态添加列
eval
方法允许你使用字符串表达式来动态添加列。
import pandas as pd
df = pd.DataFrame({
'A': range(1, 6),
'B': ['pandasdataframe.com' for _ in range(5)]
})
df.eval('C = A + 20', inplace=True)
print(df)
Output:
9. 使用 apply
方法添加列
apply
方法可以对 DataFrame 的行或列应用一个函数,常用于添加新列。
import pandas as pd
df = pd.DataFrame({
'A': range(1, 6),
'B': ['pandasdataframe.com' for _ in range(5)]
})
df['C'] = df.apply(lambda row: row['A'] * 2, axis=1)
print(df)
Output:
10. 使用 map
方法添加列
map
方法可以对 Series 的每个元素应用一个函数或字典映射,常用于添加新列。
import pandas as pd
df = pd.DataFrame({
'A': range(1, 6),
'B': ['pandasdataframe.com' for _ in range(5)]
})
df['C'] = df['A'].map(lambda x: x * 3)
print(df)
Output:
以上是使用 pandas 在 DataFrame 中添加列的十种不同方法。每种方法都有其适用场景和优缺点,选择合适的方法可以使数据处理更加高效和灵活。