我想合并dd2和dd1列,mm1和mm2列yyyy1和yyyy2列等等。如果dd1中有值,则dd2中没有值。有人可以建议一个好的方法来做到这一点吗?
我使用pandas.Series.str.extract('regex')
结束了这种格式答案 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)
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)