Python 带有随机id变量的宽\u到长

Python 带有随机id变量的宽\u到长,python,pandas,Python,Pandas,我对宽到长函数有一些问题。这个例子很好: Loc Nom Meas-1 Meas-2 Meas-3 200 A 0.8 1.1 1.2 201 B 4.9 5.1 5.2 pd.wide_to_long(df, 'Meas', i=['Loc','Nom'], j='Ref', sep='-').reset_index() Loc Nom Meas Ref 200 A 0.8 1 2

我对宽到长函数有一些问题。这个例子很好:

Loc   Nom   Meas-1   Meas-2   Meas-3
200   A     0.8      1.1      1.2
201   B     4.9      5.1      5.2

pd.wide_to_long(df, 'Meas', i=['Loc','Nom'], j='Ref', sep='-').reset_index()

Loc   Nom   Meas   Ref
200   A     0.8    1
200   A     1.1    2
200   A     1.2    3
201   B     4.9    1
201   B     5.1    2
201   B     5.2    3
我的问题是数据帧中“Meas-”后面的字符串是一个随机的字母数字序列号。一个基本的例子:

Loc   Nom   Meas-1   Meas-2D   Meas-3
200   A     0.8      1.1       1.2
201   B     4.9      5.1       5.2

pd.wide_to_long(df, 'Meas', i=['Loc','Nom'], j='Ref', sep='-').reset_index()

Loc   Nom   Meas   Meas-2D   Ref
200   A     0.8    1.1       1
200   A     1.2    1.1       3
201   B     4.9    5.1       1
201   B     5.2    5.1       3
更糟糕的是,如果所有“Meas-”部分后面都跟有包含字母的字符串,则会得到一个空数据帧错误:

Loc   Nom   Meas-1D   Meas-2D   Meas-3D
200   A     0.8       1.1       1.2
201   B     4.9       5.1       5.2

pd.wide_to_long(df, 'Meas', i=['Loc','Nom'], j='Ref', sep='-').reset_index()

Empty DataFrame
如何让这个函数使用“Meas-”后面的字符串作为Ref,而不仅仅是数字


谢谢

您应该查看
后缀
参数。(如果您没有提到它,它将默认查找数字
'\d+'
,因为'2D'不是数字,所以不返回任何内容)


试图在此处添加表,但无效。请忽略此回答。:)关于pd.wide的问题+1我不知道你怎么总是在我喝咖啡之前回答我的问题,但这很有效。谢谢大家!@斯科特伯顿谢谢你(真的希望他们能把官方文件说得更清楚:)@AndrewWinter我以前也有同样的问题。:-)@AndrewWinter嗨,如果这是你需要的,你愿意接受吗?
pd.wide_to_long(df, 'Meas', i=['Loc','Nom'], j='Ref', sep='-',suffix='\w+').reset_index()
Out[289]: 
   Loc Nom Ref  Meas
0  200   A   1   0.8
1  200   A  2D   1.1
2  200   A   3   1.2
3  201   B   1   4.9
4  201   B  2D   5.1
5  201   B   3   5.2