我有一个名为period的数据框,有3个不同的标签值,分别是2019年冬季、2020年冬季和2021年冬季,如下所示
我的问题是,如何用最终结果2019年冬季、2020年冬季和2021年冬季来取代这种格式?你知道吗
Period:
Q4 '19+Q1 '20
Q4 '20+Q1 '21
Q4 '21+Q1 '22
Q是指一年中的一个季度
所以我的方法是: 1) 首先是regex方法来制作新年专栏。我提取了第一季度之后的19年、20年、21年的数字
gas['year'] = gas['Period'].str.extract("([']\d\d)", expand=True)
然后我计划用winter替换包含Q4和Q1的值
gas['Period'].str.contains('Q4')) & (gas['Period'].str.contains('Q1')) = 'winter Gregorian'
但它取代了包含Q4和Q1的整行
也试过了
gas[gas['Period'].str.replace("[Q][4]..\d\d[+][Q][1]", 'winter Gregorian'), regex =False]
最终结果我想要的是:
Period
winter Gregorian 2019
winter Gregorian 2020
winter Gregorian 2021
但没有工作,我欢迎任何意见和建议 谢谢
我会在这里使用regex capture groups。看看这个正则表达式:
括号中的每个项目都是一个组,您可以在匹配后访问该组。例如,在
Q4 '19+Q1 '20
中,匹配的第一组是Q4
,第二组是19
,第三组是Q1
,第四组是20
。你知道吗在将句点字符串与这个正则表达式匹配之后,可以提取组匹配项来构造所需的输出格式。这段代码提供了一个完整的例子来说明如何做到这一点。你知道吗
这就产生了:
因此,我为生成自己的版本来查找所有月份并对其进行格式化,结果是:TypeError:不支持+:'NoneType'和'str'的操作数类型
抱歉,卢克可能又要打扰你了
相关问题 更多 >
编程相关推荐