我有一个大约9000的数据集,区域范围的格式是[1-5,10-99100-115],我想在提供的数据集中展开数据和行的格式。你知道吗
我的第一个想法可能是在“特丽”系列中循环播放pd系列(范围(i,100)),但这不会产生下面的输出。你知道吗
感谢您的帮助。你知道吗
import pandas as pd
d={'Peril':['Fire','Wind'],'Terri':[1-5,6-10],'Premium':[100,200]}
output={'Peril':['Fire','Fire','Fire','Fire','Fire','Wind','Wind','Wind','Wind','Wind'],'Terri':[1,2,3,4,5,6,7,8,9,10],'Premium':[100,100,100,100,100,200,200,200,200,200]}
df=pd.DataFrame(data=d)
expected_output=pd.DataFrame(data=output)
唯一可行的方法是,如果启动DataFrame的
Terri
列是字符串:如果拆分
-
上的Terri
列中的字符串,则可以将其用作range
的输入,除非需要在stop值中添加一个以包含端点。为了方便起见,您可以定义自己的范围函数:现在可以拆分列,应用
myRange
函数,并堆叠结果:最后将此结果与原始数据帧合并:
同样的事情,浓缩:
假设
Terri
要包含字符串范围,而不是减法运算,您可以创建范围的数据帧,然后stack
利用公共索引上的join
来扩展原始帧。你知道吗因为
stack
的行为将删除空值,所以您的范围不必是统一的长度。你知道吗使用几个助手列表理解,然后使用^{} 、^{} 和^{} :
[输出]
作为参考,
ranges
看起来像:lens
看起来像:相关问题 更多 >
编程相关推荐