2024-06-01 02:19:04 发布
网友
我如何将一个df的多个列转换成如下所示的多个行? 我想这样做一个非常大的测向,所以我在寻找一个相对快速的方法。你知道吗
current df: LOG_TIME QP_HCP IP_HCP QP_PRP IP_PRP 0 68444.0 4.9 0.6 4.8 3.8 df I want to obtain: LOG_TIME ORIENTATION QP IP 0 68444.0 HCP 4.9 0.6 1 68444.0 PRP 4.8 3.8
首先,重塑您的数据帧,使您具有以下格式。你知道吗
LOG_TIME ORIENTATION value result 0 68444.0 PRP 4.8 QP 1 68444.0 HCP 4.9 QP 2 68444.0 PRP 3.8 IP 3 68444.0 HCP 0.6 IP
你可以用以下方法来实现。你知道吗
new = df.melt(id_vars='LOG_TIME', value_vars=['QP_PRP', 'QP_HCP', 'IP_PRP', 'IP_HCP'], var_name='ORIENTATION') new[['result', 'ORIENTATION']] = new['ORIENTATION'].str.split('_', expand=True).rename(columns={0: 'result', 1: 'ORIENTATION'})
然后你就可以透视数据了。你知道吗
new = new.pivot_table(index=['LOG_TIME', 'ORIENTATION'], columns='result', values='value') pd.DataFrame(new.to_records()) Out[6]: LOG_TIME ORIENTATION IP QP 0 68444.0 HCP 0.6 4.9 1 68444.0 PRP 3.8 4.8
hcp_df = df[['LOG_TIME', 'QP_HCP', 'IP_HCP' ]].values prp_df = df[['LOG_TIME', 'QP_PRP', 'IP_PRP']].values df2 = pd.DataFrame(prp_df, columns=['LOG_TIME', 'QP', 'IP'], index=['PRP'] *prp_df.shape[0]) df1 = pd.DataFrame(hcp_df, columns=['LOG_TIME', 'QP', 'IP'], index=['HCP'] * hcp_df.shape[0]) df1.append(df2).reset_index().rename({'index': 'ORIENTATION'}, axis=1)
以下代码在我这边起作用: 以下是我所做的:
所需的输出如下:
ORIENTATION LOG_TIME QP IP 0 HCP 68444.0 4.9 0.6 1 PRP 68444.0 4.8 3.8
首先,重塑您的数据帧,使您具有以下格式。你知道吗
你可以用以下方法来实现。你知道吗
然后你就可以透视数据了。你知道吗
以下代码在我这边起作用: 以下是我所做的:
所需的输出如下:
相关问题 更多 >
编程相关推荐