【发布时间】:2016-02-10 22:55:52
【问题描述】:
我有一个这样的熊猫数据框:
Name SICs
Agric 0100-0199
Agric 0910-0919
Agric 2048-2048
Food 2000-2009
Food 2010-2019
Soda 2097-2097
SICs 列给出了与第一列中给出的Name 匹配的整数值范围(尽管它们存储为字符串)。
我需要扩展这个 DataFrame 以便它在范围内的每个整数都有一行:
Agric 100
Agric 101
Agric 102
...
Agric 199
Agric 910
Agric 911
...
Agric 919
Agric 2048
Food 2000
...
有没有特别好的方法可以做到这一点?我打算做这样的事情
ranges = {i:r.split('-') for i, r in enumerate(inds['SICs'])}
ranges_expanded = {}
for r in ranges:
ranges_expanded[r] = range(int(ranges[r][0]),int(ranges[r][1])+1)
但我想知道是否有更好的方法或熊猫功能可以做到这一点。 (另外,我不确定这是否可行,因为我还没有看到如何将 ranges_expanded 字典读入 DataFrame。)
【问题讨论】:
-
标准注释:如果您插入图像,则没有人可以复制和粘贴它——他们必须输入它。另一方面,如果您插入 text,我们可以使用
pd.read_clipboard()轻松重现你的框架。 -
在我看来,在您执行
ranges = {i:r.split('-') for i, r in enumerate(inds['SICs'])}时,您正在丢失“名称”信息。如果您设法将所有这些name、SIC对放入元组中,那么您可以简单地说pd.DataFrame(tuples)并为您创建 DataFrame