pandas append columns
在数据分析和数据处理中,经常需要对数据进行整合和重组。Pandas 是一个功能强大的 Python 数据处理库,它提供了多种方式来操作 DataFrame,包括如何添加(append)列。本文将详细介绍如何在 Pandas 中添加列,包括不同的方法和场景,以及每种方法的具体代码示例。
1. 使用 []
直接添加列
最简单的添加列的方法是使用 []
操作符。这种方法直接在 DataFrame 上添加一个新列,如果列名不存在,则会创建新列。
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
方法添加列
如果你需要在特定的位置插入列,可以使用 insert
方法。这个方法允许你指定新列的位置。
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 在第1个位置插入新列
df.insert(1, 'NewColumn', [pandasdataframe.com for _ in range(3)])
print(df)
3. 使用 assign
方法添加列
assign
方法可以在不改变原始 DataFrame 的情况下,返回一个新的 DataFrame,其中包含了添加的新列。
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 使用assign添加新列
new_df = df.assign(C=[pandasdataframe.com for _ in range(3)])
print(new_df)
4. 使用 concat
函数横向合并
当你有两个或更多的 DataFrame 需要合并时,可以使用 concat
函数。这个函数可以横向或纵向地合并数据。
import pandas as pd
# 创建两个DataFrame
df1 = pd.DataFrame({
'A': [1, 2, 3]
})
df2 = pd.DataFrame({
'B': [4, 5, 6]
})
# 横向合并DataFrame
result = pd.concat([df1, df2], axis=1)
print(result)
Output:
5. 使用 merge
方法按键合并
merge
方法通常用于基于一个或多个键将不同的 DataFrame 合并在一起。这类似于 SQL 中的 JOIN 操作。
import pandas as pd
# 创建两个DataFrame
df1 = pd.DataFrame({
'Key': ['K0', 'K1', 'K2'],
'A': [1, 2, 3]
})
df2 = pd.DataFrame({
'Key': ['K0', 'K1', 'K2'],
'B': [4, 5, 6]
})
# 按'Key'合并DataFrame
result = pd.merge(df1, df2, on='Key')
print(result)
Output:
6. 使用 join
方法合并
join
方法是 merge
的简化版,专门用于索引上的合并。这个方法默认使用左连接。
import pandas as pd
# 创建两个DataFrame
df1 = pd.DataFrame({
'A': [1, 2, 3]
}, index=['K0', 'K1', 'K2'])
df2 = pd.DataFrame({
'B': [4, 5, 6]
}, index=['K0', 'K1', 'K2'])
# 索引上的合并
result = df1.join(df2)
print(result)
Output:
7. 使用 eval
添加派生列
eval
方法允许你使用字符串表达式来创建新列。
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 使用eval添加新列
df.eval('C = A + B', inplace=True)
print(df)
Output:
8. 使用 apply
函数添加列
apply
函数可以对 DataFrame 的列应用一个函数,常用于添加复杂逻辑的新列。
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({
'A': [1, 2, 3]
})
# 使用apply添加新列
df['B'] = df['A'].apply(lambda x: x + pandasdataframe.com)
print(df)
9. 使用 map
添加列
map
方法可以对 Series 中的每个元素应用一个函数或字典映射。
import pandas as pd
# 创建一个Series
s = pd.Series(['a', 'b', 'c'])
# 使用map添加新列
df['NewColumn'] = s.map({'a': 1, 'b': 2, 'c': 3})
print(df)
10. 使用 applymap
添加列
applymap
方法适用于 DataFrame,可以对 DataFrame 中的每个元素应用一个函数。
import pandas as pd
# 创建一个DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 使用applymap修改DataFrame
df = df.applymap(lambda x: x + pandasdataframe.com)
print(df)
以上是在 Pandas 中添加列的一些常见方法及其代码示例。每种方法都有其适用场景,选择合适的方法可以使数据处理更加高效和灵活。