重塑熊猫数据框

莫里茨:

假设这样一个数据框:

df = pd.DataFrame([[1,2,3,4],[5,6,7,8],[9,10,11,12]], columns = ['A', 'B', 'A1', 'B1'])

在此处输入图片说明

我想要一个看起来像这样的数据框:

在此处输入图片说明

什么不起作用:

new_rows = int(df.shape[1]/2) * df.shape[0]
new_cols = 2
df.values.reshape(new_rows, new_cols, order='F')

当然,我可以遍历数据并创建新的列表列表,但是必须有更好的方法。有任何想法吗 ?

特德·彼得鲁(Ted Petrou):

pd.wide_to_long函数几乎完全针对这种情况而构建,在这种情况下,您有许多相同的变量前缀以不同的数字后缀结尾。唯一的区别是您的第一组变量没有后缀,因此您需要首先重命名列。

唯一的问题pd.wide_to_long是,它必须具有一个标识变量i,这与不同meltreset_index用于创建一个唯一标识的列,稍后将其删除。我认为这种情况将来可能会得到纠正。

df1 = df.rename(columns={'A':'A1', 'B':'B1', 'A1':'A2', 'B1':'B2'}).reset_index()
pd.wide_to_long(df1, stubnames=['A', 'B'], i='index', j='id')\
  .reset_index()[['A', 'B', 'id']]

    A   B id
0   1   2  1
1   5   6  1
2   9  10  1
3   3   4  2
4   7   8  2
5  11  12  2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章