我有一個表如下列名:熊貓:串聯取決於價值
a b c d e
r1 0 1 0 1 0
r2 1 1 0 0 0
我想創建一個F列是列名的串聯僅當行有1
值So [r1,f] = bd and [r2,f] = ab
有沒有人有一個想法,如何做到這一點熊貓?將不勝感激任何幫助!
我有一個表如下列名:熊貓:串聯取決於價值
a b c d e
r1 0 1 0 1 0
r2 1 1 0 0 0
我想創建一個F列是列名的串聯僅當行有1
值So [r1,f] = bd and [r2,f] = ab
有沒有人有一個想法,如何做到這一點熊貓?將不勝感激任何幫助!
您可以通過df
通過mul
使用多個列的名稱,然後sum
- 但在df
是被轉換到True
S和False
小號0
和1
值:
df['f'] = df.mul(df.columns.values).sum(axis=1)
print (df)
a b c d e f
r1 0 1 0 1 0 bd
r2 1 1 0 0 0 ab
通用的解決方案(如果有更多的可能值作爲0
,1
):
加eq
與1
比較:
df['f'] = df.eq(1).mul(df.columns.values).sum(axis=1)
print (df)
a b c d e f
r1 0 1 0 1 0 bd
r2 1 1 0 0 0 ab
解dot
和eq
:
df['f'] = df.eq(1).dot(df.columns.values)
print (df)
a b c d e f
r1 0 1 0 1 0 bd
r2 1 1 0 0 0 ab
與apply
另一種解決方案是slowier:
df['f'] = df.apply(lambda x: ''.join(x.index[x == 1]), axis=1)
print (df)
a b c d e f
r1 0 1 0 1 0 bd
r2 1 1 0 0 0 ab
編輯:
對於添加空間是可能的用途:
df['f'] = df['f'].apply(lambda x: ' '.join(list(x)))
print (df)
a b c d e f
r1 0 1 0 1 0 b d
r2 1 1 0 0 0 a b
數據幀中只有「0」和「1」的值,還是不是? – jezrael