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