gpt4 book ai didi

python - Pandas:如何更改列的所有值?

转载 作者:IT老高 更新时间:2023-10-28 21:40:43 24 4
gpt4 key购买 nike

我有一个数据框,其中有一列名为 "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'])

碰巧在我的 DataFrames 中,例如 fr['1961'] 的值 Date_of_incorporation 可以是任何东西(字符串、整数等on),所以也许最好完全删除这一列,然后将另一列仅包含年份附加到 DataFrame 中?

最佳答案

正如@DSM 指出的那样,您可以使用 vectorised string methods 更直接地执行此操作。 :

df['Date'].str[-4:].astype(int)

或者使用提取(假设每个字符串的某处只有一组长度为 4 的数字):

df['Date'].str.extract('(?P<year>\d{4})').astype(int)

另一种更灵活的方法,可能是使用 apply (或等效的 map )这样做:

df['Date'] = df['Date'].apply(lambda x: int(str(x)[-4:]))
# converts the last 4 characters of the string to an integer

lambda 函数从 Date 获取输入并将其转换为年份。
你可以(也许应该)把它写得更冗长:

def convert_to_year(date_in_some_format):
date_as_string = str(date_in_some_format) # cast to string
year_as_string = date_in_some_format[-4:] # last four characters
return int(year_as_string)

df['Date'] = df['Date'].apply(convert_to_year)

也许“年”是这个专栏更好的名字……

关于python - Pandas:如何更改列的所有值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12604909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com