我有以下df:
stuff
james__America by Estonia : 2
luke__Spain by Italy 3
michael 4
Louis__Portugal by USA 2
我希望在索引中存在子字符串“ __”的情况下,然后我想分割索引并在其旁边创建2个新列,以用'by'进行第二次分割,以获取以下输出:
name1 name2 stuff
james America Estonia 2
luke Spain Italy 3
michael 0 0 4
Louis Portugal USA 2
我认为是使用:
df.index.str.split('__', expand=True).split(' by ',expand=True).rename(columns={0:'name1',1:'name2'})
但是它似乎不起作用。
答案 0 :(得分:1)
通过Index.to_series
将Index
转换为Series
,然后通过第一个分隔符使用Series.str.split
,然后按第二列拆分,合并原始列并最后覆盖索引:
df1 = df.index.to_series().str.split('__', expand=True)
df2 = df1[1].str.split(' by ',expand=True).rename(columns={0:'name1',1:'name2'}).fillna('0')
df = df2.join(df)
df.index = df1[0].rename(None)
print (df)
name1 name2 stuff
james America Estonia 2
luke Spain Italy 3
michael 0 0 4
Louis Portugal USA 2