我有一個數據幀結構爲這樣: 變換多列爲一家擁有熊貓
我想知道最有效的方式是大熊貓創造,其提取ISN任何值的新列「舞臺」什麼't'None'在四列中,並將該值用於'stage'列。然後可以在stage列已經提取出每行中不是None的任何值後刪除剩餘的四列。
請注意,在相關的列中的值是字符串類型,無不是真正Nonetype。
我有一個數據幀結構爲這樣: 變換多列爲一家擁有熊貓
我想知道最有效的方式是大熊貓創造,其提取ISN任何值的新列「舞臺」什麼't'None'在四列中,並將該值用於'stage'列。然後可以在stage列已經提取出每行中不是None的任何值後刪除剩餘的四列。
請注意,在相關的列中的值是字符串類型,無不是真正Nonetype。
df['New']=df[['A','B','C']].replace('None','').sum(1)
df
Out[1477]:
A B C New
0 None B None B
1 A None None A
2 None None C C
數據輸入
df=pd.DataFrame({'A':['None','A','None'],'B':['B','None','None'],'C':['None','None','C']})
謝謝!那工作。我不明白代碼的.sum(1)部分。你能解釋那裏發生了什麼? –
@ KeenanBurke-Pitts sum(1),是將df逐行相加,它是字符串,它會將它們連接在一起:-)(PS:我將全部替換爲無)' – Wen
感謝您的幫助! –
combine_first
考慮,假設無不是字面'None'
的字符串。
df['stage'] = df['doggo'].combine_first(df['floorfer'])\
.combine_first(df['pupper'])\
.combine_first(df['puppo'])
另外,對於乾兒的方法,使用reduce
:
from functools import reduce
...
df['stage'] = reduce(lambda x,y: x.combine_first(y),
[df['doggo'], df['floorfer'], df['pupper'], df['puppo']])
你不介意分享實際數據框代替作爲圖片的代碼? – user32185