熊猫数据框有效地将列作为新行附加

时间:2021-01-14 12:46:01

标签: python pandas

如果我有一个 df:

df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c'])

并希望获取第二列“b”并附加到“新”df 的末尾,其中包含“a”和“b”列以及包含“b”列名称的名称列,然后是第三列“c”并与“a”和名称“c”一起附加到新df的末尾。 它是时间序列数据,日期时间在“a”中,变量在 b 和 c 中,有时有 20 个变量,有时有 1 或 2 个。

我如何以一种漂亮而有效的方式做到这一点。 现在我就是这样做的,但是对于稍微不同的 df 但有相同的想法,我必须这样做 100 次。

col_nam_list = list(df.columns.values)
df_1 = pd.DataFrame()
df_1["a"] = df["a"]
df_1["name"] = col_nam_list[1]
df_1["value"] = df["b"]

df_2 = pd.DataFrame()
df_2["a"] = df["a"]
df_2["name"] = col_nam_list[2]
df_2["value"] = df["c"]

result = pd.concat([df_1, df_2])

这应该是输出 results

现在这写起来不好玩,而且看起来很丑,而且没必要太长。我如何改进我的方法?

BR

1 个答案:

答案 0 :(得分:2)

IIUC,您可以使用 pd.DataFrame.melt,参数 id_vars 等于 'a',

df.melt('a')

输出:

   a variable  value
0  1        b      2
1  4        b      5
2  7        b      8
3  1        c      3
4  4        c      6
5  7        c      9