[英]How to split a string in a pandas dataframe, and return multiple dataframes
我有一个 pandas dataframe 包含字符串:
df = pd.DataFrame({'column1': ['One_Two_Three', 'First_Second_Third', 'nrOne_nrTwo_nrThree'], 'column2': ['nrOne_nrTwo_nrThree', 'First_Second_Third', 'One_Two_Three'], 'column3': ['First_Second_Third', 'One_Two_Three', 'nrOne_nrTwo_nrThree'],})
Out[0]: df
column1 column2 column3
0 One_Two_Three nrOne_nrTwo_nrThree First_Second_Third
1 First_Second_Third First_Second_Third One_Two_Three
2 nrOne_nrTwo_nrThree One_Two_Three nrOne_nrTwo_nrThree
我想以三个数据帧结束,以便第一个包含第一个下划线之前的字符,第二个包含第二个下划线之前的字符,第三个包含最后一部分。 对于第一个喜欢:
df_one
Out[1]:
column1 column2 column3
0 One nrOne First
1 First First One
2 nrOne One nrOne
我试过了
df_temp = df.apply(lambda x: x.str.split('_'))
df_temp
Out[2]:
column1 column2 column3
0 [One, Two, Three] [nrOne, nrTwo, nrThree] [First, Second, Third]
1 [First, Second, Third] [First, Second, Third] [One, Two, Three]
2 [nrOne, nrTwo, nrThree] [One, Two, Three] [nrOne, nrTwo, nrThree]
将其拆分为列表和
df_temp.apply(lambda x: x[0])
Out[3]:
column1 column2 column3
0 One nrOne First
1 Two nrTwo Second
2 Three nrThree Third
但这最终只影响第一行。 谁有解决方案?
一种解决方案是使用 applymap:
df_temp.applymap(lambda x: x[0])
Out[0]:
column1 column2 column3
0 One nrOne First
1 First First One
2 nrOne One nrOne
另一种是通过堆叠和取消堆叠在系列上使用应用:
df_temp.stack().apply(lambda x: x[0]).unstack()
Out[0]:
column1 column2 column3
0 One nrOne First
1 First First One
2 nrOne One nrOne
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.