为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas:从列表创建数据框,每个元素都有重复日期

Pandas:从列表创建数据框,每个元素都有重复日期

蛊毒传说 2023-07-27 10:07:16
我查看了谷歌和这里试图找到答案,但似乎无法正确地表达它以获得有关这个确切问题的帮助。我想创建一个数据框,其中有一个名为“部门”的列,其中包含列表中的值,然后对于该列中的每个值,我想要相同的日期时间范围。清单是:departments = ['Sales', 'Specialist', 'Purchase', 'HR']日期范围是( df 是我与原始日期范围不同的数据框。):pd.date_range(start=df.InvoiceDate.min(), end=df.InvoiceDate.max(), freq='1D')所以,我尝试了这个,但由于形状的原因它给了我一个错误,我明白只是不知道如何解决它。df2 = pd.DataFrame(department,(pd.date_range(start=df.InvoiceDate.min(), end=df.InvoiceDate.max(), freq='1D')), columns=['Department',"InvoiceDate"])期望的结果是这样的:          Department    InvoiceDate    0        Sales      2019-03-25    1        Sales      2019-03-26    2        Sales      2019-03-27    ...    5     Specialist    2019-03-25    6     Specialist    2019-03-26    7     Specialist    2019-03-27    ...    8      Purchase     2019-03-25    9      Purchase     2019-03-26   10      Purchase     2019-03-27    ...   11         HR        2019-03-25   12         HR        2019-03-26   13         HR        2019-03-27
查看完整描述

2 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

为此,您可以使用以下代码:


声明部门列表并获取范围内的日期列表(最小和最大)


departments = ['Sales', 'Specialist', 'Purchase', 'HR']


dates = pd.date_range(start=df.InvoiceDate.min(), end=df.InvoiceDate.max(), freq='1D').tolist()

你想要一个笛卡尔积,所以使用下面的函数


def cartesian_product(data):

    index = pd.MultiIndex.from_product(data.values(), names=data.keys())

    return pd.DataFrame(index=index).reset_index()


cartesian_product({'departments': departments,

                   'date': a})

查看完整回答
反对 回复 2023-07-27
?
catspeake

TA贡献1111条经验 获得超0个赞

您以错误的方式调用 pd.DataFrame() 。此外,作为数据提供的 2 个数组的大小也不同。要解决您可以执行以下操作:


 departments = ['Sales', 'Specialist', 'Purchase', 'HR']

 sizeDates = len(dates)

 sizeDep = len(departments)

 departments = departments * sizeDates

 dates = dates * sizeDep 

 dates = pd.date_range(start=df.InvoiceDate.min(), end=df.InvoiceDate.max(), freq='1D').tolist()

 departments = departments * len(dates)

 data = {'departments': departments,'date': dates}


 df2 = pd.DataFrame(data)


查看完整回答
反对 回复 2023-07-27
  • 2 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信