【发布时间】:2018-12-13 16:37:10
【问题描述】:
我一直在想办法重新排列数据框。我的原始数据框如下所示:
df:
YOB Name Treatment_1 Date_1 Treatment_2 Date_2
0 1974 John A 2018-11-13 D 2018-12-13
1 1975 Jones B 2018-11-14 E 2018-12-14
2 1976 Jack C 2018-11-15 F 2018-12-15
现在我希望我的数据框在不同的行上显示不同的治疗信息
df:
YOB Name Treatment Date
0 1974 John A 2018-11-13
1 1974 John D 2018-12-13
2 1975 Jones B 2018-11-14
3 1975 Jones E 2018-12-14
4 1976 Jack C 2018-11-15
5 1976 Jack F 2018-12-15
任何人都可以帮助阐明这件事,因为我已经被困了好几天了。
在此感谢您
注意:我已对其进行了简化,但实际数据集将有 20 多个与治疗相关的列,有没有办法使用范围而不是输入每一列?很抱歉一开始没有说清楚
【问题讨论】:
-
你试过什么?你有很多选择。考虑恰当命名的
wide_to_long。 -
pd.wide_to_long(df,['Treatment','Date'],i=['YOB','Name'],j='drop',sep='_').reset_index(level=[0,1]) -
我已经尝试过wide_to_long,它可以工作,但是有没有更有效的方法而不是键入每一列,因为有超过22个相关列但具有相同的分隔符?很抱歉一开始没有说清楚:(
-
我不这么认为,您必须在列上使用某种循环并单独“融化”每列然后合并结果,或者您可能必须编写一些正则表达式逻辑去获取列组在一起并为 pd.wide_to_long 构建参数,而无需输入完整列表。
标签: python python-3.x pandas dataframe jupyter-notebook