我有一个Python数据框架,它有一个范围内的列,我想将它转换成单独的行。这个是可能的吗?本质上是“unbin”并维护其他相关列,即使它们包含相同的数据。下面的例子和附件。
第1行-范围(Ex.100-105)行2-3 -特定数据与该范围内的一切相关。
我想把它变成单独的行。
100 -关联数据列101 -关联数据列102 -关联数据列103 -关联数据列104 -关联数据列105 -关联数据列
发布于 2022-03-13 19:42:57
让我们假设这是您的dataframe,其中的范围是一个字符串类型:
import pandas as pd
df0 = pd.DataFrame(
[
{
"range": "100-105",
"value": "Specific data associated with everything in that range.",
}
]
)在将字符串解析为实际整数范围时,可以迭代所有行并构造一个新的DataFrame:
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)发布于 2022-03-13 21:03:33
将范围分成两部分(开始,停止),然后生成值,最后将行分解为单独的行:
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)输出:
>>> 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输入:
>>> df
Range A
0 100-105 1
1 106-110 2https://stackoverflow.com/questions/71460061
复制相似问题