从提取正则表达式追加包含重复列的数据帧行

时间:2017-10-25 12:16:34

标签: python pandas

我的数据框如下: enter image description here

我想合并dd2和dd1列,mm1和mm2列yyyy1和yyyy2列等等。如果dd1中有值,则dd2中没有值。有人可以建议一个好的方法来做到这一点吗?

我使用pandas.Series.str.extract('regex')

结束了这种格式

1 个答案:

答案 0 :(得分:1)

您可以使用lreshape

d = {'mm':df.columns[df.columns.str.startswith('mm')],
     'dd':df.columns[df.columns.str.startswith('dd')],
     'yyyy':df.columns[df.columns.str.startswith('yyyy')]}

df = pd.lreshape(df, d)

wide_to_long

df = pd.wide_to_long(df.reset_index(),stubnames=['mm','dd','yyyy'], i=['index'], j='DROPME')
       .dropna(how='all')
       .reset_index(drop=True)

或者将带有数字的文字提取到Multiindex,然后提取stack

a = df.columns.to_series().str.extract('(dd|mm|yyyy)(\d+)', expand=True).values.tolist()
df.columns = pd.MultiIndex.from_tuples(a)
df = df.stack().reset_index(drop=True)