Pandas 合并两列

Pandas 合并两列

参考:pandas concat two columns

在数据处理过程中,经常需要将两个或多个列合并成一个新的列。Pandas 是一个强大的数据分析工具库,它提供了多种方式来合并数据列。本文将详细介绍如何使用 Pandas 合并两个数据列,包括不同的合并方式和场景。

1. 使用 + 运算符合并两个列

最简单的合并两个列的方法是使用 + 运算符。这种方法适用于两个文本列的简单拼接。

示例代码 1

import pandas as pd

data = {
    'A': ['pandasdataframe.com', 'example', 'test'],
    'B': ['tutorial', 'pandasdataframe.com', 'data']
}
df = pd.DataFrame(data)
df['C'] = df['A'] + df['B']
print(df)

Output:

Pandas 合并两列

2. 使用 str.cat() 方法合并字符串列

当需要更复杂的字符串操作,比如在两个列之间加入分隔符或者只合并非空值时,可以使用 str.cat() 方法。

示例代码 2

import pandas as pd

data = {
    'A': ['pandasdataframe.com', 'example', None],
    'B': ['tutorial', 'pandasdataframe.com', 'data']
}
df = pd.DataFrame(data)
df['C'] = df['A'].str.cat(df['B'], sep=' - ')
print(df)

Output:

Pandas 合并两列

3. 使用 apply() 函数自定义合并逻辑

如果需要更复杂的合并逻辑,可以使用 apply() 函数结合一个自定义函数来实现。

示例代码 3

import pandas as pd

data = {
    'A': ['pandasdataframe.com', 'example', 'test'],
    'B': ['tutorial', 'pandasdataframe.com', 'data']
}
df = pd.DataFrame(data)
df['C'] = df.apply(lambda row: f"{row['A']} - {row['B']}", axis=1)
print(df)

Output:

Pandas 合并两列

4. 使用 concat() 函数合并多个列

当需要同时合并多个列时,可以使用 pd.concat() 函数。这个函数不仅可以合并列,还可以合并行。

示例代码 4

import pandas as pd

data = {
    'A': ['pandasdataframe.com', 'example', 'test'],
    'B': ['tutorial', 'pandasdataframe.com', 'data']
}
df = pd.DataFrame(data)
df_new = pd.concat([df['A'], df['B']], axis=1)
print(df_new)

Output:

Pandas 合并两列

5. 使用 join() 方法合并列

join() 方法是另一种合并列的方式,它可以在合并时设置不同的连接方式,如内连接、外连接等。

示例代码 5

import pandas as pd

data1 = {
    'A': ['pandasdataframe.com', 'example', 'test']
}
data2 = {
    'B': ['tutorial', 'pandasdataframe.com', 'data']
}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
df_joined = df1.join(df2)
print(df_joined)

Output:

Pandas 合并两列

6. 使用 merge() 方法在合并时指定键

merge() 方法提供了一种在合并两个 DataFrame 时指定连接键的方式。这对于复杂的数据合并非常有用。

示例代码 6

import pandas as pd

data1 = {
    'key': ['K0', 'K1', 'K2'],
    'A': ['pandasdataframe.com', 'example', 'test']
}
data2 = {
    'key': ['K0', 'K2', 'K3'],
    'B': ['tutorial', 'pandasdataframe.com', 'data']
}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
df_merged = df1.merge(df2, on='key')
print(df_merged)

Output:

Pandas 合并两列

7. 使用 pivot_table() 在合并列时创建数据透视表

pivot_table() 方法可以在合并列的同时创建数据透视表,这对于数据分析尤其有用。

示例代码 7

import pandas as pd

data = {
    'A': ['pandasdataframe.com', 'example', 'test'],
    'B': ['tutorial', 'pandasdataframe.com', 'data'],
    'C': [1, 2, 3]
}
df = pd.DataFrame(data)
pivot_table = df.pivot_table(values='C', index='A', columns='B', aggfunc='sum')
print(pivot_table)

Output:

Pandas 合并两列

8. 使用 groupby()agg() 在合并列时进行分组和聚合

groupby() 方法允许你按照某个或某些列的值进行分组,而 agg() 方法可以在这些分组上执行一个或多个聚合操作。

示例代码 8

import pandas as pd

data = {
    'A': ['pandasdataframe.com', 'example', 'test'],
    'B': ['tutorial', 'pandasdataframe.com', 'data'],
    'C': [1, 2, 3]
}
df = pd.DataFrame(data)
grouped = df.groupby('A').agg({'C': 'sum'})
print(grouped)

Output:

Pandas 合并两列

9. 使用 melt() 方法在合并列时重塑数据

melt() 方法可以将 DataFrame 从宽格式转换为长格式,这在合并列时非常有用,尤其是当你需要将多个列的数据合并到一个列中时。

示例代码 9

import pandas as pd

data = {
    'A': ['pandasdataframe.com', 'example', 'test'],
    'B': ['tutorial', 'pandasdataframe.com', 'data'],
    'C': [1, 2, 3]
}
df = pd.DataFrame(data)
melted = df.melt(id_vars=['A'], value_vars=['B', 'C'])
print(melted)

Output:

Pandas 合并两列

10. 使用 stack() 方法在合并列时堆叠数据

stack() 方法将 DataFrame 的列“堆叠”成行,从而实现列的合并。

示例代码 10

import pandas as pd

data = {
    'A': ['pandasdataframe.com', 'example', 'test'],
    'B': ['tutorial', 'pandasdataframe.com', 'data'],
    'C': [1, 2, 3]
}
df = pd.DataFrame(data)
stacked = df.stack()
print(stackeds)

以上是使用 Pandas 合并两列的十种不同方法。每种方法都有其适用场景和特点,选择合适的方法可以有效地解决数据处理中的问题。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程