Python 将字符串列与日期范围相乘
Python multiply string column with daterange
我有一个如下所示的数据框:
list_name
---------
list1
list2
...
我尝试将每一行与一个日期范围相乘:
start = datetime.date(2019, 1, 1)
end = datetime.date(2025, 1, 1)
daterange = pd.date_range(start, end)
想要的结果如下:
list_name| date
---------| --------
list1 | 2019-01-01
list1 | 2019-01-02
list1 | 2019-01-03
... | ...
list1 | 2025-01-01
list2 | 2019-01-01
list2 | 2019-01-02
list2 | 2019-01-03
... | ...
list2 | 2025-01-01
我不确定如何将它展开成行。
解决方案,感谢@QuangHoang的评论:
from itertools import product
pd.DataFrame(list(product(df.list_name, daterange)), columns=['list_name', 'date'])
您可以使用 pd.merge(how = 'cross')
来实现此目的
df = pd.DataFrame({
'list_name' : ['list1', 'list2']
})
start = datetime.date(2019, 1, 1)
end = datetime.date(2025, 1, 1)
daterange = pd.DataFrame(pd.date_range(start, end))
pd.merge(df, daterange, how = 'cross')df = pd.DataFrame({
'list_name' : ['list1', 'list2']
})
start = datetime.date(2019, 1, 1)
end = datetime.date(2025, 1, 1)
daterange = pd.DataFrame(pd.date_range(start, end))
pd.merge(df, daterange, how = 'cross')
我有一个如下所示的数据框:
list_name
---------
list1
list2
...
我尝试将每一行与一个日期范围相乘:
start = datetime.date(2019, 1, 1)
end = datetime.date(2025, 1, 1)
daterange = pd.date_range(start, end)
想要的结果如下:
list_name| date
---------| --------
list1 | 2019-01-01
list1 | 2019-01-02
list1 | 2019-01-03
... | ...
list1 | 2025-01-01
list2 | 2019-01-01
list2 | 2019-01-02
list2 | 2019-01-03
... | ...
list2 | 2025-01-01
我不确定如何将它展开成行。
解决方案,感谢@QuangHoang的评论:
from itertools import product
pd.DataFrame(list(product(df.list_name, daterange)), columns=['list_name', 'date'])
您可以使用 pd.merge(how = 'cross')
来实现此目的
df = pd.DataFrame({
'list_name' : ['list1', 'list2']
})
start = datetime.date(2019, 1, 1)
end = datetime.date(2025, 1, 1)
daterange = pd.DataFrame(pd.date_range(start, end))
pd.merge(df, daterange, how = 'cross')df = pd.DataFrame({
'list_name' : ['list1', 'list2']
})
start = datetime.date(2019, 1, 1)
end = datetime.date(2025, 1, 1)
daterange = pd.DataFrame(pd.date_range(start, end))
pd.merge(df, daterange, how = 'cross')