我正在尝试转换一个具有动态数量的a_P
列的DataFrame,看起来像这样:
a1_P a2_P weight
0 33297.81 17407.93 14733.23
1 58895.18 43013.57 86954.04
转换为新的DataFrame,看起来像这样(按P排序)
P weight
0 17407.93 14733.23
1 33297.81 14733.23
2 43013.57 86954.04
3 58895.18 86954.04
目前我尝试的是
names = ["a1", "a2"]
p = pd.DataFrame(columns=["P", "weight"])
for i in range(0, len(names)):
p += df[["{}_P".format(names[i]), "weight"]]
我希望你能排序数据,但由于列名不相同,所以无法完成操作。
melt
的设计初衷。在这个特定的例子中,你甚至不需要指定value_vars
。id_vars
也不必是一个列表。只需要这样:pd.melt(df, id_vars='weight')
。 - LondonRob.reset_index()
。 - firelynx