我有一個df,目前有4列。第一列是由_分隔的3個項目的組合。例如:44_title_iphone6_32GB
我想要的是44
title
iphone6_32gb
在他們自己的新列中。但是,我不能在_上做一個簡單的df.split,因爲它會將iphone6和32gb分成兩部分。我怎樣才能做到這一點?另一個問題是這3個項目中的最後一個並不總是一致的,例如。 44_title_iphone5_32gb_white
因此,無論我還想在每一個新欄目中輸入數字,標題,說明。熊貓分裂數據框
幫助?
我有一個df,目前有4列。第一列是由_分隔的3個項目的組合。例如:44_title_iphone6_32GB
我想要的是44
title
iphone6_32gb
在他們自己的新列中。但是,我不能在_上做一個簡單的df.split,因爲它會將iphone6和32gb分成兩部分。我怎樣才能做到這一點?另一個問題是這3個項目中的最後一個並不總是一致的,例如。 44_title_iphone5_32gb_white
因此,無論我還想在每一個新欄目中輸入數字,標題,說明。熊貓分裂數據框
幫助?
split
接受拆分的數量的n
參數:
>>> df = pd.DataFrame({"stuff": ["44_title_iphone6_32GB", "44_title_iphone5_32gb_white"]})
>>> df
stuff
0 44_title_iphone6_32GB
1 44_title_iphone5_32gb_white
>>> df["stuff"].str.split("_", 2)
0 [44, title, iphone6_32GB]
1 [44, title, iphone5_32gb_white]
Name: stuff, dtype: object
然後,如果我們.apply(pd.Series)
,我們可以推廣這些以列:
>>> df["stuff"].str.split("_", 2).apply(pd.Series)
0 1 2
0 44 title iphone6_32GB
1 44 title iphone5_32gb_white
UPDATE:
注意這幾天您可以使用expand=True
而不是apply(pd.Series)
:
>>> df["stuff"].str.split("_", 2, expand=True)
0 1 2
0 44 title iphone6_32GB
1 44 title iphone5_32gb_white
我該如何改變0,1,2的列名?我試過這個,它不工作? 'df = df.rename(columns = {「0」:「new_name」},inplace = True)' – user3508494
另外,新的例子。如果這三個元素沒有像上面那樣排列呢?我將如何能夠做到這一點?對於前: '44_title_iphone6_32GB」 'iphone6_32GB_33_title' 'title_ipad_24' @DSM – user3508494
@ user3508494:默認列*號*,而不是字符串。將它們重命名。或者,您可以始終指定:'df.columns = ['a','b','c']'。 – DSM
通常的規則:1)原始數據,2)代碼,3)期望的輸出,謝謝。 – EdChum