使用str.split
:
df
ID visits
0 1 12 1 40 50
1 2 56 2 567 34
2 3 4 5 345 78
visits = df['visits'].str.split(expand=True).add_prefix('visit_')
visits
visit_0 visit_1 visit_2 visit_3
0 12 1 40 50
1 56 2 567 34
2 4 5 345 78
接下來,串聯visits
與ID
:
df = pd.concat([df[['ID']], visits], 1)
df
ID visit_0 visit_1 visit_2 visit_3
0 1 12 1 40 50
1 2 56 2 567 34
2 3 4 5 345 78
如果你想每個號碼的每個數字分別,你會鏈df.apply
通話。此外,要用0
代替8
,請使用df.replace
。
visits = df['visits'].str.replace('\s+', '')\
.apply(lambda x: pd.Series(list(x))).add_prefix('visit_')\
.replace('[89]', 0, regex=True)
visits
ID visit_0 visit_1 visit_2 visit_3 visit_4 visit_5 visit_6 visit_7
0 1 1 2 1 4 0 5 0 NaN
1 2 5 6 2 5 6 7 3 4
2 3 4 5 3 4 5 7 0 NaN
請注意,每列是一列字符串(object
類型)。但是,如果你想要它們作爲整數,你會想擺脫NaN
s。如果你可以放棄NaN
列,這個解決方案簡化了一點。
visits = df.visits.str.replace('\s+', '')\
.apply(lambda x: pd.Series(list(x)))\
.dropna(axis=1).add_prefix('visit_').astype(int) % 8
visits
visit_0 visit_1 visit_2 visit_3 visit_4 visit_5 visit_6
0 1 2 1 4 0 5 0
1 5 6 2 5 6 7 3
2 4 5 3 4 5 7 0
你仍然需要連接visits
使用pd.concat
df.ID
。
首先:你確定位數總是一樣的嗎?如果情況並非如此,那麼您可能需要做其他事情(例如,在該列上應用功能)。 – pazqo
@pazqo看着它,我會說不。這是一個大文件(1000行)。這就是爲什麼我想使用Python。 – Supern92
你想分割數字或_numbers_?分裂數字似乎毫無意義。另外,你可以在文本中粘貼一些數據嗎?與流行的看法相反,圖片沒有幫助。 –