列拆分为两个单独的列
Column split into two separate columns
我正在尝试将 Period 列拆分为两个不同的列。第一个是季度,第二个是相应的年份。
import pandas as pd
df = pd.DataFrame({'Period': ["Q3'16", "Q1'17", "Q2'17","Q3'17"]})
dtype: 对象
结果应如下所示:
df = pd.Dataframe({'Quarter': ['Q3', 'Q1', 'Q2','Q3'],
'Year': ['2016','2017','2017','2017']})
因为这不属于任何时间戳格式。我在解决这个问题时遇到了一些困难。
作为参考,我的原始 df 看起来像这样。该列是对象类型。
使用 Series.str.extract
将句点转换为日期时间并提取 year
:
dates = pd.to_datetime(df['Period'].replace(r"(Q\d)'(\d+)", r'-', regex=True))
df['Quarter'] = df['Period'].str.extract(r"(Q\d)")
df['Year'] = dates.dt.strftime('%Y')
或者如果所有年份都大于 2000
使用 str.extract
:
df['Quarter'] = df['Period'].str.extract(r"(Q\d)")
df['Year'] = '20' + df['Period'].str.extract(r"'(\d+)")
或Series.str.split
的解决方案:
s = df['Period'].str.split("'")
df['Quarter'] = s.str[0]
df['Year'] = '20' + s.str[1]
选择:
df[['Quarter','Year']] = df['Period'].str.split("'", expand=True)
df['Year'] = '20' + df['Year']
print (df)
Period Quarter Year
0 Q3'16 Q3 2016
1 Q1'17 Q1 2017
2 Q2'17 Q2 2017
3 Q3'17 Q3 2017
import pandas as pd
df = pd.DataFrame({'Period': ["Q3'16", "Q1'17", "Q2'17","Q3'17"]})
df = pd.DataFrame(df.Period.str.split("'",1).tolist(),
columns = ['Quarter','Year'])
df["Year"] = "20"+df["Year"]
print(df)
我正在尝试将 Period 列拆分为两个不同的列。第一个是季度,第二个是相应的年份。
import pandas as pd
df = pd.DataFrame({'Period': ["Q3'16", "Q1'17", "Q2'17","Q3'17"]})
dtype: 对象
结果应如下所示:
df = pd.Dataframe({'Quarter': ['Q3', 'Q1', 'Q2','Q3'],
'Year': ['2016','2017','2017','2017']})
因为这不属于任何时间戳格式。我在解决这个问题时遇到了一些困难。
作为参考,我的原始 df 看起来像这样。该列是对象类型。
使用 Series.str.extract
将句点转换为日期时间并提取 year
:
dates = pd.to_datetime(df['Period'].replace(r"(Q\d)'(\d+)", r'-', regex=True))
df['Quarter'] = df['Period'].str.extract(r"(Q\d)")
df['Year'] = dates.dt.strftime('%Y')
或者如果所有年份都大于 2000
使用 str.extract
:
df['Quarter'] = df['Period'].str.extract(r"(Q\d)")
df['Year'] = '20' + df['Period'].str.extract(r"'(\d+)")
或Series.str.split
的解决方案:
s = df['Period'].str.split("'")
df['Quarter'] = s.str[0]
df['Year'] = '20' + s.str[1]
选择:
df[['Quarter','Year']] = df['Period'].str.split("'", expand=True)
df['Year'] = '20' + df['Year']
print (df)
Period Quarter Year
0 Q3'16 Q3 2016
1 Q1'17 Q1 2017
2 Q2'17 Q2 2017
3 Q3'17 Q3 2017
import pandas as pd
df = pd.DataFrame({'Period': ["Q3'16", "Q1'17", "Q2'17","Q3'17"]})
df = pd.DataFrame(df.Period.str.split("'",1).tolist(),
columns = ['Quarter','Year'])
df["Year"] = "20"+df["Year"]
print(df)