首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在Python中将一个范围转换为单个行吗?

我可以在Python中将一个范围转换为单个行吗?
EN

Stack Overflow用户
提问于 2022-03-13 19:18:23
回答 2查看 264关注 0票数 0

我有一个Python数据框架,它有一个范围内的列,我想将它转换成单独的行。这个是可能的吗?本质上是“unbin”并维护其他相关列,即使它们包含相同的数据。下面的例子和附件。

第1行-范围(Ex.100-105)行2-3 -特定数据与该范围内的一切相关。

我想把它变成单独的行。

100 -关联数据列101 -关联数据列102 -关联数据列103 -关联数据列104 -关联数据列105 -关联数据列

示例

EN

回答 2

Stack Overflow用户

发布于 2022-03-13 19:42:57

让我们假设这是您的dataframe,其中的范围是一个字符串类型:

代码语言:javascript
复制
import pandas as pd

df0 = pd.DataFrame(
    [
        {
            "range": "100-105",
            "value": "Specific data associated with everything in that range.",
        }
    ]
)

在将字符串解析为实际整数范围时,可以迭代所有行并构造一个新的DataFrame:

代码语言:javascript
复制
result = []
for ix, row in df0.iterrows():
    range_str = row["range"]
    for range_ in range(int(range_str.split("-")[0]), int(range_str.split("-")[1]) + 1):
        result.append({"range": range_, "value": row["value"]})
df = pd.DataFrame(result)
票数 0
EN

Stack Overflow用户

发布于 2022-03-13 21:03:33

将范围分成两部分(开始,停止),然后生成值,最后将行分解为单独的行:

代码语言:javascript
复制
expand_range = lambda x: range(int(x[0]), int(x[1])+1)

out = df.assign(Range=df['Range'].str.split('-').map(expand_range)).explode('Range')
print(out)

输出:

代码语言:javascript
复制
>>> out
  Range  A
0   100  1
0   101  1
0   102  1
0   103  1
0   104  1
0   105  1
1   106  2
1   107  2
1   108  2
1   109  2
1   110  2

输入:

代码语言:javascript
复制
>>> df
     Range  A
0  100-105  1
1  106-110  2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71460061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档