我有一个名为"Date"
的列的数据框,希望此列中的所有值都具有相同的值(仅限年份)。示例:
City Date
Paris 01/04/2004
Lisbon 01/09/2004
Madrid 2004
Pekin 31/2004
我想要的是:
City Date
Paris 2004
Lisbon 2004
Madrid 2004
Pekin 2004
这是我的代码:
fr61_70xls = pd.ExcelFile('AMADEUS FRANCE 1961-1970.xlsx')
#Here we import the individual sheets and clean the sheets
years=(['1961','1962','1963','1964','1965','1966','1967','1968','1969','1970'])
fr={}
header=(['City','Country','NACE','Cons','Last_year','Op_Rev_EUR_Last_avail_yr','BvD_Indep_Indic','GUO_Name','Legal_status','Date_of_incorporation','Legal_status_date'])
for year in years:
# save every sheet in variable fr['1961'], fr['1962'] and so on
fr[year]=fr61_70xls.parse(year,header=0,parse_cols=10)
fr[year].columns=header
# drop the entire Legal status date column
fr[year]=fr[year].drop(['Legal_status_date','Date_of_incorporation'],axis=1)
# drop every row where GUO Name is empty
fr[year]=fr[year].dropna(axis=0,how='all',subset=[['GUO_Name']])
fr[year]=fr[year].set_index(['GUO_Name','Date_of_incorporation'])
碰巧在我的数据帧中,例如fr['1961']
,Date_of_incorporation
的值可以是任何值(字符串、整数等),所以最好完全删除此列,然后将另一个只有年份的列附加到数据帧?
可以使用
apply
进行列转换定义一个clean函数来删除美元和逗号,并将数据转换为浮点数。
下一步,在你的专栏上这样称呼它。
或者如果要在
apply
函数中使用lambda
函数:正如@DSM所指出的,您可以更直接地使用vectorised string methods:
或者使用extract(假设每个字符串中只有一组长度为4的数字):
另一种稍微灵活一点的方法,可能是使用^{} (或等价于^{} )来执行此操作:
lambda函数从
Date
获取输入并将其转换为一年。你可以(或许应该)把这个写得更详细一些:
也许“年”是这个专栏的一个更好的名字。。。
相关问题 更多 >
编程相关推荐