簡體   English   中英

如何有效地應用條件字符串方法將數據幀列拆分為兩個?

[英]How to efficiently apply conditional string methods to split a dataframe column in two?

我正在清理一些數據,並希望有條件地拆分其值由換行符分隔的列。 (例如,3t10 \\ n5b12)這些數據存在於column_a或column_b中,另一個是NaN。 (作為參考,列是qualification_a_group或qualification_b_group。一個人(行)只能在一個。)

除了資格列之外,還有一個final和semi_final列(具有相同類型的數據)。 我能夠使用附加代碼拆分它們,但是需要使用條件來選擇不是nan的限定列。 我已經嘗試了下面的第二塊代碼,但只有當column_a不為null時才會產生。

'''
# This works
final_split = combined['final'].str.split("\n", n=1, expand=True)
combined['final_tops'] = final_split[0]
combined['final_zones'] = final_split[1]
'''

'''
# This only works for when qualification_a != nan
q1_split = combined['qualification_a'].str.split("\n", n=1, expand=True)
q2_split = combined['qualification_b'].str.split("\n", n=1, expand=True)

combined['qualification_tops'] = q1_split[0].where(q1_split[0] != np.nan, 
other=q2_split[0])
combined['qualification_zones'] = q1_split[1].where(q1_split[0] != 
np.nan, other=q2_split[1])
'''

我相信這是由於方法沒有迭代每一行,並且我需要使用for循環來解析限定列,而不像final和semi_final。 這是正確的還是我最初做錯了什么,如果是這樣的話,那么最有效/ pythonic的方法是什么呢? 謝謝。

弄清楚:np.where而不是df.where

''''
combined['qualification_tops'] = np.where(q1_split[0].isnull(), q2_split[0], q1_split[0])
combined['qualification_zones'] = np.where(q1_split[0].isnull(), q2_split[1], q1_split[1])
''''

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM