CJH*_*CJH 4 python stack melt pandas
我有一个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
Run Code Online (Sandbox Code Playgroud)
但我想使用列标签中的文本将其转换为更整齐的长格式以创建新列...例如,来自上面的第一行和最后一行的数据可能看起来更像这样:
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
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚融合/堆栈/重塑/ MultiIndex或其他翻译功能的正确组合,以使这种情况有效发生,或者没有我的代码变得丑陋,笨拙,几乎不可读. 这个问题和这个问题很接近并帮助了我一些,但它们似乎只是根据标签中的单个属性进行转换.非常喜欢SO社区的任何帮助或提示!
让我们尝试pd.wide_to_long两次使用一些列重命名使一切成为可能:
rename_d = {'exprt_cond1_time':'Time_exprt_cond1',
'exprt_cond2_time':'Time_exprt_cond2',
'exprt_cond1_freq':'Freq_exprt_cond1',
'exprt_cond2_freq':'Freq_exprt_cond2',
'novce_cond1_time':'Time_novce_cond1',
'novce_cond2_time':'Time_novce_cond2',
'novce_cond1_freq':'Freq_novce_cond1',
'novce_cond2_freq':'Freq_novce_cond2'}
f = df.rename(columns=rename_d)
df1 = pd.wide_to_long(df, ['Time_exprt','Freq_exprt','Time_novce','Freq_novce'],i=['Equipment','Function','Task'],j='Condition',sep='_',suffix='.')
df1 = df1.reset_index()
df_out = pd.wide_to_long(df1,['Time','Freq'],i=['Equipment','Function','Task','Condition'],j='Experience',sep='_',suffix='').reset_index().drop('ID',axis=1)
Run Code Online (Sandbox Code Playgroud)
输出:
Equipment Function Task Condition Experience Time Freq
0 eq_type_1 Fxn_a task_1 cond1 exprt 12 0.031
1 eq_type_1 Fxn_a task_1 cond1 novce 15 0.042
2 eq_type_1 Fxn_a task_1 cond2 exprt 24 0.055
3 eq_type_1 Fxn_a task_1 cond2 novce 31 0.059
4 eq_type_1 Fxn_a task_2 cond1 exprt 10 0.028
5 eq_type_1 Fxn_a task_2 cond1 novce 12 0.039
6 eq_type_1 Fxn_a task_2 cond2 exprt 22 0.052
7 eq_type_1 Fxn_a task_2 cond2 novce 29 0.055
8 eq_type_1 Fxn_b task_3 cond1 exprt 13 0.033
9 eq_type_1 Fxn_b task_3 cond1 novce 18 0.047
10 eq_type_1 Fxn_b task_3 cond2 exprt 25 0.057
11 eq_type_1 Fxn_b task_3 cond2 novce 34 0.062
12 eq_type_1 Fxn_b task_4 cond1 exprt 9 0.027
13 eq_type_1 Fxn_b task_4 cond1 novce 10 0.038
14 eq_type_1 Fxn_b task_4 cond2 exprt 19 0.051
15 eq_type_1 Fxn_b task_4 cond2 novce 28 0.054
16 eq_type_2 Fxn_a task_1 cond1 exprt 14 0.036
17 eq_type_2 Fxn_a task_1 cond1 novce 16 0.043
18 eq_type_2 Fxn_a task_1 cond2 exprt 27 0.056
19 eq_type_2 Fxn_a task_1 cond2 novce 32 0.061
20 eq_type_2 Fxn_a task_2 cond1 exprt 11 0.030
21 eq_type_2 Fxn_a task_2 cond1 novce 14 0.041
22 eq_type_2 Fxn_a task_2 cond2 exprt 26 0.054
23 eq_type_2 Fxn_a task_2 cond2 novce 30 0.058
Run Code Online (Sandbox Code Playgroud)
pd.wide_to_long处理熊猫中的"同时融化".首先,我们需要重命名这些列以使pd.wide_to_long中的stubnames工作.
| 归档时间: |
|
| 查看次数: |
796 次 |
| 最近记录: |