我有这样的数据:
year = ['2010', '2011-2014', '2013', '2012-2016', '2018-present', '2019', '2015-present', '2015']
products = ['A', 'B', 'C', 'D', 'B', 'E', 'F', 'A']
rating = [4, 2, 2, 3, 1, 1, 2, 2]
data = pd.DataFrame({'Products': products, 'Year': year, 'Rating': rating})
在我的分析中,我想将年份范围转换为单一年份的值(例如['2010', '2011', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020']
),并为其他列添加年份范围中的计数。例如,对于上述示例,我希望具有:{'2010':'A','2011':'B','2013':'B','2014':'B','2013':'c ','2012':'D','2013':'D','2014':'D','2015':'D','2016':'D',...}
我相信我需要的与pandas.cut
装箱相反,但我不知道如何在大熊猫中进行
您可以str.split
在IIUC列中Year
使用某些条件,然后使用列表理解:
df["Year"] = [list(range(int(i[0]), int(i[1] if i[1]!= "present" else "2020")+1))
if len(i)>1 else list(range(int(i[0]), int(i[0])+1))
for i in df["Year"].str.split("-")]
print (df.explode("Year"))
Products Year Rating
0 A 2010 4
1 B 2011 2
1 B 2012 2
1 B 2013 2
1 B 2014 2
2 C 2013 2
3 D 2012 3
3 D 2013 3
3 D 2014 3
3 D 2015 3
3 D 2016 3
4 B 2018 1
4 B 2019 1
4 B 2020 1
5 E 2019 1
6 F 2015 2
6 F 2016 2
6 F 2017 2
6 F 2018 2
6 F 2019 2
6 F 2020 2
7 A 2015 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句