如何使用熊猫拆分数据框?
Posted
技术标签:
【中文标题】如何使用熊猫拆分数据框?【英文标题】:How to split a dataframe using pandas? 【发布时间】:2019-01-19 12:33:16 【问题描述】:我有以下数据框要处理, 东风
Name City
Hat, Richards Paris
Adams New york
Tim, Mathews Sanfrancisco
chris, Moya De Las Vegas
kate, Moris Atlanta
Grisham HA Middleton
James, Tom, greval Rome
我预期的数据框应该如下,DF
Name Last_name City
Hat Richards Paris
Adams New york
Tim Mathews Sanfrancisco
chris Moya De Las Vegas
kate Moris Atlanta
Grisham HA Middleton
James, Tom greval Rome
应该在最后一个 ',' 上进行拆分,如果没有 ',',那么整个其他单词或短语应该落在“Last_name”列中,“Name”列应该保持空白。
【问题讨论】:
【参考方案1】:使用str.split
和radd
添加,
,最后使用str.lstrip
:
df[['first','last']] = df['Name'].radd(', ').str.rsplit(', ', n=1, expand=True)
df['first'] = df['first'].str.lstrip(', ')
print (df)
Name City first last
0 Hat, Richards Paris Hat Richards
1 Adams New york Adams
2 Tim, Mathews Sanfrancisco Tim Mathews
3 chris, Moya De Las Vegas chris Moya De
4 kate, Moris Atlanta kate Moris
5 Grisham HA Middleton Grisham HA
6 James, Tom, greval Rome James, Tom greval
【讨论】:
【参考方案2】:使用str.split
和n=-1
(这是默认设置,您可以更改您需要的内容)
newdf=df.Name.str.split(', ',expand=True,n=1).ffill(1)
newdf.loc[newdf[0]==newdf[1],0]=''
newdf
Out[923]:
0 1
0 Hat Richards
1 Adams
2 Tim Mathews
3 chris MoyaDe
4 kate Moris
5 GrishamHA
df[['Name','LastName']]=newdf
df
Out[925]:
Name City LastName
0 Hat Paris Richards
1 Newyork Adams
2 Tim Sanfrancisco Mathews
3 chris LasVegas MoyaDe
4 kate Atlanta Moris
5 Middleton GrishamHA
【讨论】:
【参考方案3】:又快又脏
使用pandas.str.split
和str[::-1]
颠倒顺序
df[['Last_name', 'Name']] = df.Name.str.split(', ').str[::-1].apply(pd.Series)
df
Name City Last_name
0 Hat Paris Richards
1 NaN New york Adams
2 Tim Sanfrancisco Mathews
3 chris Las Vegas Moya De
4 kate Atlanta Moris
5 NaN Middleton Grisham HA
【讨论】:
以上是关于如何使用熊猫拆分数据框?的主要内容,如果未能解决你的问题,请参考以下文章