📜  带有元组的 pandas 拆分列 - Python (1)

📅  最后修改于: 2023-12-03 15:25:27.058000             🧑  作者: Mango

带有元组的 pandas 拆分列 - Python

在 pandas 中,可以使用元组类型作为列索引,每个元组包含两个字符串类型的值,表示大类和小类。本文将介绍如何将包含元组的列拆分成两个独立的列。

示例数据

先创建一个包含元组类型的 DataFrame:

import pandas as pd

data = {
    ('A', 'a'): [1, 2, 3],
    ('A', 'b'): [4, 5, 6],
    ('B', 'c'): [7, 8, 9],
}

df = pd.DataFrame(data)
print(df)

输出:

   A     B
   a  b  c
0  1  4  7
1  2  5  8
2  3  6  9
方法一:使用 MultiIndex

可以使用 MultiIndex 提供的 get_level_values 方法获取大类和小类:

df.columns = pd.MultiIndex.from_tuples(df.columns)

df['大类'] = df.columns.get_level_values(0)
df['小类'] = df.columns.get_level_values(1)

print(df)

输出:

   A     B 大类 小类
   a  b  c
0  1  4  7  A  a
1  2  5  8  A  b
2  3  6  9  B  c
方法二:使用 split 方法

也可以使用 str.split() 方法将列名拆分成两部分:

df.columns = df.columns.map(lambda x: '|'.join(x))

df[['大类', '小类']] = df.columns.str.split('|', expand=True)

print(df)

输出:

   A|a  A|b  B|c 大类 小类
0    1    4    7  A  a
1    2    5    8  A  b
2    3    6    9  B  c
总结

以上就是使用 MultiIndex 和 split 方法对包含元组的 pandas 列进行拆分的方法。根据实际情况选用合适的方法即可。