【发布时间】:2018-03-30 19:15:45
【问题描述】:
我有一个 Pandas 数据框,其中包含非常广泛的数据...例如:
ID Equipment Function Task exprt_cond1_time exprt_cond2_time exprt_cond1_freq exprt_cond2_freq novce_cond1_time novce_cond2_time novce_cond1_freq novce_cond2_freq
0 eq_type_1 Fxn_a task_1 12 24 0.031 0.055 15 31 0.042 0.059
1 eq_type_1 Fxn_a task_2 10 22 0.028 0.052 12 29 0.039 0.055
2 eq_type_1 Fxn_b task_3 13 25 0.033 0.057 18 34 0.047 0.062
3 eq_type_1 Fxn_b task_4 9 19 0.027 0.051 10 28 0.038 0.054
4 eq_type_2 Fxn_a task_1 14 27 0.036 0.056 16 32 0.043 0.061
5 eq_type_2 Fxn_a task_2 11 26 0.030 0.054 14 30 0.041 0.058
但我想使用列标签中的文本将其转换为更整洁的长格式以创建新列...例如,上面第一行和最后一行的数据可能看起来更像这样:
ID Equipment Function Task Experience Condition Time Freq
0 eq_type_1 Fxn_a task_1 expert cond1 12 0.031
1 eq_type_1 Fxn_a task_1 expert cond2 24 0.055
2 eq_type_1 Fxn_a task_1 novice cond1 15 0.042
3 eq_type_1 Fxn_a task_1 novice cond2 31 0.059
...
16 eq_type_2 Fxn_a task_2 expert cond1 11 0.030
17 eq_type_2 Fxn_a task_2 expert cond2 26 0.054
18 eq_type_2 Fxn_a task_2 novice cond1 14 0.041
19 eq_type_2 Fxn_a task_2 novice cond2 30 0.058
我无法找出正确的组合 melt / stack / reshape / MultiIndex 或其他翻译函数来有效地实现这一点,或者我的代码不会变得丑陋、笨拙和几乎不可读。 This question 和 this question 很接近并帮助了我一些,但它们似乎只基于标签中的单个属性进行转换。希望来自 SO 社区的任何帮助或提示!
【问题讨论】: