如何将pandas.core.series.Series 分配给pandas 数据框列

时间:2021-02-03 20:28:30

标签: python pandas

我正在尝试将 pandas.core.series.Series 分配给 Pandas 数据框列。

首先我创建一个函数:

####################################### set month #################################
import datetime
import pandas as pd

actual_date = datetime.now()
actual_date = datetime.strptime("{}/{}/{}".format('01', actual_date.month, actual_date.year), "%d/%m/%Y")

def set_date(actual_date):
    result = actual_date - dateutil.relativedelta.relativedelta(months=1)
    print(datetime.strftime(result, "%d/%m/%Y"))

然后我将它应用到 Pandas df 并将其定义为 pd_object,它返回一个包含 pandas.core.series.Series 输出的 set_date() 类型:

pd_object = pd.Series(df.apply(lambda x: set_date(actual_date), axis=1));

然后,当我将它分配给一个新的 col df['month']=pd_object 时,它会返回一个充满 None 行的 Pandas 数据框列,而预期结果必须是 set_date() 这些行的输出。

如何将 pd_object 分配给新的 Pandas 数据框列?

1 个答案:

答案 0 :(得分:1)

您的 set_date 函数仅打印,但不返回任何内容,即 None。这就是您获得所有 None 的原因。也许你的意思是:

def set_date(actual_date):
    result = actual_date - dateutil.relativedelta.relativedelta(months=1)
    return datetime.strftime(result, "%d/%m/%Y")

# your `apply` code seems to return a single, constant value for the whole dataframe
# you can just let Pandas broadcast that to the whole data
df['month'] = set_date(actual_date)