如何使用Pandas/Python对特定列中的每个项目行使用函数

如何使用Pandas/Python对特定列中的每个项目行使用函数,python,pandas,dataframe,Python,Pandas,Dataframe,我在Pandas中有一个简单的数据框,其中一列包含这种格式的日期day month year。 我需要制作另一个列,包含该工作日是哪一天。我编写了这个函数,它可以处理像'12-3-1999'这样的简单参数: def convert_date_to_weekday(date_string): # convert string to date object date_object = datetime.strptime(date_string, '%d-%m-%Y').date() #

我在Pandas中有一个简单的数据框,其中一列包含这种格式的日期day month year。 我需要制作另一个列,包含该工作日是哪一天。我编写了这个函数,它可以处理像'12-3-1999'这样的简单参数:

def convert_date_to_weekday(date_string):
  # convert string to date object
  date_object = datetime.strptime(date_string, '%d-%m-%Y').date()
  # convert date object to weekday string
  print(date_object.strftime("%A"))
不幸的是,这不起作用:

df['Weekday'] = convert_date_to_weekday(df['Date'])
如何使其工作?

您可以使用,这也是熊猫的推荐方法

def convert_date_to_weekday(date_string):
  # convert string to date object
  date_object = datetime.strptime(date_string, '%d-%m-%Y').date()
  # convert date object to weekday string
  # print(date_object.strftime("%A"))
  return date_object.strftime("%A") 


df['Weekday'] = df['Date'].apply(lambda x: convert_date_to_weekday(x)))
试一试

并在函数中使用return而不是print

尝试:

def convert_date_to_weekday(date_string):
  # convert string to date object
  date_object = datetime.strptime(date_string, '%d-%m-%Y').date()
  # convert date object to weekday string
  return date_object.strftime("%A")
与应用行一起使用。

您可能希望使用pandas数据帧的方法:

df['Weekday'] = df['Date'].apply(convert_date_to_weekday)
但是您的
将日期转换为工作日应返回结果,而不是打印。

您可以使用该功能

df['Weekday'] = df['Date'].apply(lambda d: convert_date_to_weekday(d))

另外,将您的
打印(日期对象.strftime(“%A”)
更改为
返回日期对象.strftime(“%A”)

谢谢。成功了。我不知道这个lambda语法)我想在编程方面还有很多事情要做。
df['Weekday'] = df['Date'].apply(lambda d: convert_date_to_weekday(d))