将单个数据帧中的多个列合并到单个数据帧中

时间:2019-08-16 07:26:06

标签: python pandas dataframe merge concatenation

我有一个包含多个列名称的数据框,例如“ Load_Node_Values,Load_KV_Values,Load_Node_Values,Load_KV_Values,Load_P_ST_Values,Load_ST_Values,G_Node_Values,G_KV_Values,G_P_ST_Values,G_ST_Values,Line_T_Values,Line_Node_Values,Line_Node_Values,Line_Node_Values ,T_ST_Values,Load_P_ST_Values,Load_ST_Values,G_Node_Values G_KV_Values,G_P_ST_Values,G_ST_Values,Line_Node_Values,Line_KV_Values,Line_P_ST_Values,Line_ST_Values,T_Node_Values,T_KV_Values”。所有这些列都具有数字和字符串值。我想合并所有的值 将Load_Node_values,G_Node_values,Line_Node_values和T_Node_Values装入一个单独的列“新名称”,类似地,将另一列也装入另一个新的列名称。

This is how the dataset looks like

我使用框架并将所有要合并的列放进去。在代码中,我显示了frame_node,frame_KV,frame_P,frame_ST,并将所有列名称放在代码中,如代码所示。

frame_KV=[df1['Load_KV_Values'],df2['G_KV_Values'],df3['Line_KV_Values'],df4['T_KV_Values']]
frame_P=[df1['Load_P_ST_Values'],df2['G_P_ST_Values'],df3['Line_P_ST_Values'],df4['T_P_ST_Values']]
frame_ST=[df1['Load_ST_Values'],df2['G_ST_Values'],df3['Line_ST_Values'],df4['T_ST_Values']]

frames=[frame_node,frame_KV,frame_P,frame_ST]

result_nodes=pd.concat(frames)

这是我从短信中得到的错误。 “ TypeError:无法连接类型为“”的对象;只有pd.Series,pd.DataFrame和pd.Panel(不建议使用)objs有效”

2 个答案:

答案 0 :(得分:0)

Series列表的列表,因此将其展平为Series的列表:

result_nodes=pd.concat([y for x in frames for y in x])

或者可能需要先通过axis=1从列表中进行合并,然后默认使用axis=0(应该省略):

result_nodes=pd.concat(pd.concat([x for x in frames], axis=1))

答案 1 :(得分:0)

frame_1=df1[['Load_KV_Values','Load_P_ST_Values','Load_ST_Values']]
frame_2= df2[['G_P_ST_Values','G_KV_Values','G_ST_Values']]
frame_3=df3[['Line_KV_Values','Line_ST_Values','Line_P_ST_Values']
frame_4 = df4[['T_KV_Values','T_P_ST_Values','T_ST_Values']
result_nodes = pd.concat([frame_1, frame_2, frame_3, frame_4], axis =1)

请通过以下方法进行检查,并请确认所有四个数据框的行数均相同。 -请投票