【问题标题】:How to fix the "the id variables need to uniquely identify each row" problem when using wide_to_long?使用wide_to_long时如何解决“id变量需要唯一标识每一行”的问题?
【发布时间】:2020-12-18 21:43:59
【问题描述】:

这是one的后续帖子

请找到 MCVE here

我的数据框与以下类似:

ID    Date   ColA1   ColB1   ColA2   ColB2   ColA3   ColB3 
id1   date1   1        2      3        4       5       6      
id2   date2   7        8      9        10      11      12

我想拆分列ColA2ColB2ColA3ColB3 并将它们作为行再次合并到数据集中(并且仍然保留IDDate

预期输出:

ID   Date     ColA  ColB
id1  date1    1      2
id1  date1    3      4
id1  date1    5      6
id2  date2    7      8
id2  date2    9      10
id2  date2    11     12

我都试过了 pd.wide_to_long(df, stubnames = ['ColA', 'ColB'], i = ['ID', 'Date'], j = 'value').reset_index([0,1])

pd.wide_to_long(df.reset_index(), stubnames = ['ColA', 'ColB'], i = ['ID', 'Date'], j = 'value').reset_index(drop=True)

但还是出现同样的错误,说the id variables need to uniquely identify each row

我也已经尝试了herereset_index() 的方法,但我仍然遇到同样的问题。

我猜这个问题来自我的特定数据集。但我不知道它有什么问题以及如何解决这个问题,以解决这个问题。你有什么建议吗?

请告诉我我能做些什么来解决这个问题。谢谢!

【问题讨论】:

  • 我无法重现该问题。第一个代码工作正常。请提供Minimal, Complete, and Verifiable 示例。
  • 嗨,乔治,谢谢你的建议。我已经在问题中添加了 MCVE 的链接。你也可以找到它here。我期待收到您的更多消息。谢谢!
  • 不幸的是,这不是 MCVE。您应该直接在问题正文中提供一些输入数据的最小示例,而不是通过可能会在一段时间后失效的链接。 CSV 中的数据包含 1000 行,这不是最少的!此外,您的代码示例对 ColAColB 等列名进行操作...但我在 CSV 中看不到这些列。
  • 嗨,乔治。我仍在研究如何将输入数据直接添加到问题中。但我会尽快添加。我还将 CSV 链接中的数据缩短为 10 行,我希望你能在此期间帮助我。我试图通过将列命名为ColAColB 来简化我的问题。我很抱歉造成混乱。我希望你能理解并能帮助我。谢谢!
  • CSV文件中的IDDateColAColB对应的列有哪些?

标签: python pandas dataframe


【解决方案1】:

这两行我都没有收到任何错误,要达到您想要的结果,只需使用 double reset_index as:

df = (pd.wide_to_long(df, stubnames=['ColA','ColB'], i=['ID','Date'], j='value')
        .reset_index([0,1])
        .reset_index(drop=True))

print(df)
    ID   Date  ColA  ColB
0  id1  date1     1     2
1  id1  date1     3     4
2  id1  date1     5     6
3  id2  date2     7     8
4  id2  date2     9    10
5  id2  date2    11    12

【讨论】:

  • 感谢您的回复。我拥有的数据集比问题中的数据集更复杂,有 4 个 stubnames 列和 3 个 id_variables。我尝试你的仍然遇到同样的错误。我认为问题来自我的特定数据集。但我不知道为了解决这个问题有什么问题。你有什么建议吗?对此,我真的非常感激。谢谢!
  • @Annie 我们可以提供帮助,如果您可以提供一个看起来像您的原始数据的MCVE
  • 嗨桑迪普。我真的很感谢你的帮助。请找到 MCVE here。如果您需要更多信息,请随时告诉我。我期待很快收到您的更多消息。谢谢!
  • 嗨,Sandeep,你有关于这个问题的任何更新可以分享吗?任何事情都会受到高度赞赏。谢谢!
  • 嗨,我只想更新一下我已经解决了上面的问题。谢谢你的帮助!!!
猜你喜欢
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多