Pandas 将两列或多列按行合并为新的列条件

Pandas 将两列或多列按行合并为新的列条件,pandas,Pandas,我想将两个或更多列合并成一个新列,根据行条件(即1,一个整数),新列应该是一个包含连接字符串的列 我尝试使用非零来过滤行中的零,但失败了 索引诉讼委员会会议 A 10 B00 C 1 1 D 0 1 尝试了此操作,但它只是合并了所有索引: rdf['NEW']=rdf.apply(lambda x:','.join(x.index)如果x.nonzero()否则为0,轴=1) “新”列应如下所示: 索引诉讼委员会会议新增 10英镑的诉讼 B00 C 1 1诉讼、董事会会议 D 0 1董事会会

我想将两个或更多列合并成一个新列,根据行条件(即1,一个整数),新列应该是一个包含连接字符串的列

我尝试使用非零来过滤行中的零,但失败了

索引诉讼委员会会议
A 10
B00
C 1 1
D 0 1
尝试了此操作,但它只是合并了所有索引:

rdf['NEW']=rdf.apply(lambda x:','.join(x.index)如果x.nonzero()否则为0,轴=1)
“新”列应如下所示:

索引诉讼委员会会议新增
10英镑的诉讼
B00
C 1 1诉讼、董事会会议
D 0 1董事会会议

任何帮助都将不胜感激

这是
for
循环适合于熊猫的为数不多的事情之一

col_names = rdf.columns.tolist()
rdf["NEW"] = ""

for col in col_names:
    rdf.loc[rdf[col] == 1, "NEW"] = rdf.loc[rdf[col] == 1, "NEW"] + ("," + col)

rdf["NEW"] = rdf["NEW"].str.strip(",")
这就行了

rdf['New'] = rdf.replace(1, pd.Series(rdf.columns+',', rdf.columns)).\
                                           replace(0, '').sum(axis = 1).\
                                           str.strip(',')

使用:



谢谢这是好的和整洁的!谢谢,我是个新来这里“问”问题的人。虽然我已经浏览stackoverflow超过五年了。@ModernChart当然:)没问题,干杯:)for loop对代码阅读很好,但不是我想要的。无论如何谢谢你!
final=df.assign(NEW=(df.dot(df.columns+',').str[:-1]))
       LAWSUIT  BOARD-MEETING                    NEW
index                                               
A            1              0                LAWSUIT
B            0              0                       
C            1              1  LAWSUIT,BOARD-MEETING
D            0              1          BOARD-MEETING