如何在Python的Multiindex列中串联满足特定条件的Pandas数据框

塔纳西斯

我有以下两个数据框:

d1 = {('CAR','ALPHA'): pd.Series(['A11', 'A12', 'A13', 'A14'],index=[1, 2, 3, 4]),
      ('CAR','BETA'): pd.Series(['B11', 'B12', 'B13', 'B14'],index=[1, 2, 3, 4])}
da= pd.DataFrame(data=d1)
d2 = {('CAR','ALPHA'): pd.Series(['A22', 'A23', 'A24', 'A25'],index=[2, 3, 4, 5]), 
      ('CAR','BETA'): pd.Series(['B22', 'B23', 'B24', 'B25'],index=[2, 3, 4, 5]),
      ('MOTOR','SOLO'): pd.Series(['S22', 'S23', 'S24', 'S25'], index=[2, 3, 4, 5])}
db= pd.DataFrame(data=d2)

它们应如下所示:

在此处输入图片说明

我要实现的目标是在一个新的数据帧中添加两个数据帧的所有列,这些列在Column索引之一中具有特定的单词。

例如,我想在顶层列中包含所有具有CAR的列:

在此处输入图片说明

我的pandas版本是0.21.0,而我的复杂代码版本中的列名如下:

df = pd.concat([da, db], axis=1)
print(df.columns)
Index([('V', 'C', 'I', 'P'),
       ('V', 'G', 'T', '-'),
       ('P', 'G', 'T', '-')], dtype='object')

在上面,我只想在列multiindex的第一级中保留V列。

提前致谢。

耶斯列尔

使用pandas.concatDataFrame.xs

df = pd.concat([da, db], axis=1).xs('CAR', level=0, axis=1, drop_level=False)

或使用切片器

df = pd.concat([da, db], axis=1).loc[:, pd.IndexSlice['CAR', :]]

print (df)
    CAR                
  ALPHA BETA ALPHA BETA
1   A11  B11   NaN  NaN
2   A12  B12   A22  B22
3   A13  B13   A23  B23
4   A14  B14   A24  B24
5   NaN  NaN   A25  B25

编辑:

DataFrame有4个级别,因此需要:

idx = pd.Index([('V', 'C', 'I', 'P'),
       ('V', 'G', 'T', '-'),
       ('P', 'G', 'T', '-')], dtype='object')
df = pd.DataFrame(0, columns=idx, index=[1,2])
print (df)
   V     P
   C  G  G
   I  T  T
   P  -  -
1  0  0  0
2  0  0  0


df1 = df.xs('V', level=0, axis=1, drop_level=False)
print (df1)
   V   
   C  G
   I  T
   P  -
1  0  0
2  0  0

:为每个级别添加以选择第二,第三和第三级别的所有值:

df1 = df.loc[:, pd.IndexSlice['V', :, :, :]]
print (df1)
   V   
   C  G
   I  T
   P  -
1  0  0
2  0  0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 Pandas 数据框中获取满足特定条件的行

Python / Pandas:满足特定条件时如何处理数据列

仅在满足特定条件的情况下,如何在Python Pandas数据框列上执行数学运算?

如何在熊猫数据框中以特定条件分组

在Pandas数据框中满足特定条件的所有行的均值

使新数据框满足特定条件

如何在特定条件下过滤熊猫数据框中的列值?

如何在我的特定条件下在数据框中添加列?

如何更改满足特定条件的数据框中的第一个值

如何将满足特定条件的列的标题返回给pandas中的新列

如何使用 Pandas 在 Python 中满足特定条件后删除观察

如何在符合特定条件的数据框中找到最小值并返回特定列

计算Pandas数据框中符合特定条件的行数

根据特定条件修改 Spark 数据框中的列

满足特定条件的熊猫数据框正向填充

如何根据特定条件从Pandas数据框中随机选择行?

如何使用不在 Pandas 数据框中的特定条件对行进行分组?

如何在数据框的特定条件下提取某些行(Python)?

如何在熊猫中具有特定条件的列名放入数据框单元格

如何在熊猫数据框中设置重新采样的特定条件?

如何在具有特定条件的数据框中添加值

在Python中串联MultiIndex数据框

为满足数据框中特定条件的行添加新行

显示熊猫数据框中满足特定条件的所有单元格

如何根据特定条件在数据框熊猫中的列上添加一列

如何通过在pyspark中的特定条件下添加列来丰富数据框?

如何根据特定条件将普通数据框转换为MultiIndex

从SAS中的数据集中提取满足特定条件的特定列

如果根据数据帧的行和列值满足特定条件,如何获取列标题?