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 中添加列的十种不同方法。每种方法都有其适用场景和优缺点,选择合适的方法可以使数据处理更加高效和灵活。
极客笔记