【问题标题】:Python Data Transformation using Pandas使用 Pandas 进行 Python 数据转换
【发布时间】:2022-01-26 21:51:45
【问题描述】:

我的数据集是这样的

    Name
83   A
84   A
85   A
97   C
98   C
99   C
131  D
132  D
133  D

并继续使用随机索引。

而我想要的输出是;

Instance Name RowID1 RowID2 RowID3
1        A    83     84     85
2        C    97     98     99
3        D    131    132    133

**请注意-名称和索引是随机的,它们之间没有关系。我如何使用 Python (Pandas) 来做到这一点。

【问题讨论】:

  • Instance 是列吗?
  • 对,是一栏
  • @mozway - 似乎部分被骗了,所以应该重新打开。你怎么看?
  • @jezrael 可能有一个更好的骗局,但感觉就像一个被看到了 100 次的用例,但一定要按照你的意愿去做

标签: python pandas dataframe


【解决方案1】:

第一步是将 df.index 通过DataFrame.reset_index 转换为df['index'] 列,然后通过GroupBy.cumcount 在DataFrame.assign 中创建辅助列g,通过DataFrame.pivot 旋转,通过DataFrame.add_prefix 重命名列。

最后一次使用DataFrame.insert 用于列Instance:

df = (df.reset_index()
        .assign(g = lambda x: x.groupby('Name').cumcount().add(1))
        .pivot('Name', 'g', 'index')
        .add_prefix('RowID')
        .reset_index()
        .rename_axis(None, axis=1))

df.insert(0, 'Instance', range(1, len(df) + 1))
print (df)
   Instance Name  RowID1  RowID2  RowID3
0         1    A      83      84      85
1         2    C      97      98      99
2         3    D     131     132     133

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 2017-03-16
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多