Pandas 熊猫在行参与条件中连接索引的一部分

Pandas 熊猫在行参与条件中连接索引的一部分,pandas,append,filtering,Pandas,Append,Filtering,我有一个表格,以行和行的形式列出了修复和引擎的功率 发动机功率始终包含符号“/” 因此,过滤我的索引: 我想要的是每一张发票都有一个不同权力的列表 例如,对于“inv123”,新行应包含['400/HP','500kw/h'] 到目前为止,我有以下代码: 从itertools导入压缩 boolean_filter = DF.index.str.contains('/') & DF['inv123'] indexlist =list(DF.index) mylist = list(

我有一个表格,以行和行的形式列出了修复和引擎的功率

发动机功率始终包含符号“/”

因此,过滤我的索引:

我想要的是每一张发票都有一个不同权力的列表

例如,对于“inv123”,新行应包含['400/HP','500kw/h']

到目前为止,我有以下代码: 从itertools导入压缩

 boolean_filter = DF.index.str.contains('/') & DF['inv123']
 indexlist =list(DF.index)
 mylist = list(compress(indexlist, boolean_filter))
 # you can generate it in one liner
 mylist = list(compress(DF.index,DF.index.str.contains('/') & DF['inv123']))

print(mylist)
结果

['400/HP', '500/kwh']
这是我必须在row='concatenate“column='inv123'中添加的值

我遇到了一些问题

  • a) 我不能以蟒蛇式的方式(没有循环)完成这项工作
  • b) 添加具有以下内容的空行时:

    追加(pd.Series(name='concatenate'))

0s、1s(整数)的数据类型更改为float,这使得代码不可重用(不再是布尔值)

如何解决这个问题


但是,我仍然必须对我提出的解决方案的每一列进行循环

from itertools import compress
lc=[list(compress(DF.index,DF.index.str.contains('/') & DF.iloc[:,i])) for i in range(len(DF.columns))]
第一件事是用每列的布尔值压缩索引列表(DF.iloc[:,i])

结果,我得到了一个列表,其中每个元素都是所需值的列表

这个解决方案一点也不优雅。 我花了几个小时。

DF.where(DF==1.stack()
或类似的东西。