Pandas:规范化数据帧

2024-05-14 18:57:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个扁平文件中输入了数据。我想通过将数据拆分为表来规范化这些数据。我可以用pandas来做这件事吗?也就是说,将扁平化的数据读入DataFrame实例,然后应用一些函数来获得结果DataFrame实例?在

示例:

数据在磁盘上以CSV文件的形式提供给我,如下所示:

ItemId   ClientId   PriceQuoted  ItemDescription
1        1          10           scroll of Sneak
1        2          12           scroll of Sneak
1        3          13           scroll of Sneak
2        2          2500         scroll of Invisible
2        4          2200         scroll of Invisible

我想创建两个数据帧:

^{pr2}$

以及

ItemId   ClientId   PriceQuoted
1        1          10
1        2          12
1        3          13
2        2          2500
2        4          2200

如果pandas对于最简单的情况只有一个很好的解决方案(规范化结果是2个具有多对一关系的表,就像上面的例子一样),那么它可能就足够满足我当前的需要了。不过,我将来可能需要一个更全面的解决方案。在


Tags: 文件of数据实例dataframepandas解决方案规范化
1条回答
网友
1楼 · 发布于 2024-05-14 18:57:33
In [30]: df = pandas.read_csv('foo1.csv', sep='[\s]{2,}')

In [30]: df
Out[30]:
   ItemId  ClientId  PriceQuoted      ItemDescription
0       1         1           10      scroll of Sneak
1       1         2           12      scroll of Sneak
2       1         3           13      scroll of Sneak
3       2         2         2500  scroll of Invisible
4       2         4         2200  scroll of Invisible

In [31]: df1 = df[['ItemId', 'ItemDescription']].drop_duplicates().set_index('ItemId')

In [32]: df1
Out[32]:
            ItemDescription
ItemId
1           scroll of Sneak
2       scroll of Invisible

In [33]: df2 = df[['ItemId', 'ClientId', 'PriceQuoted']]

In [34]: df2
Out[34]:
   ItemId  ClientId  PriceQuoted
0       1         1           10
1       1         2           12
2       1         3           13
3       2         2         2500
4       2         4         2200

相关问题 更多 >

    热门问题