我有一个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