根据子字符串的存在来拆分索引列

时间:2019-08-27 07:04:56

标签: pandas

我有以下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'}) 

但是它似乎不起作用。

1 个答案:

答案 0 :(得分:1)

通过Index.to_seriesIndex转换为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