python - 创建具有重复值的数据框

我正在尝试在 Pandas 中创建一个数据框,它有两个变量(“date”和“time_of_day”,其中“date”是 30 天的 120 个观察值(每天有四个观察值:1,1,1,1 ; 2,2,2,2; 等),然后第二个变量“time_of_day)重复 30 次,值为 1,2,3,4。

我发现最接近这个问题的是:How to create a series of numbers using Pandas in Python ,这让我得到了下面的代码,但我收到一个错误,它必须是一维数组。

df = pd.DataFrame({'date': np.tile([pd.Series(range(1,31))],4), 'time_of_day': pd.Series(np.tile([1, 2, 3, 4],30 ))})

所以最终的数据框看起来像

日期日> time_of_day 1 1 1 2 1 3 1 4 2 1 2 2 2 3 2 4 表>

非常感谢!

最佳答案

你需要一次 np.repeat 和一次 np.tile

df = pd.DataFrame({'date': np.repeat(range(1,31),4), 
                   'time_of_day': np.tile([1, 2, 3, 4],30)})
print(df.head(10))
   date  time_of_day
0     1            1
1     1            2
2     1            3
3     1            4
4     2            1
5     2            2
6     2            3
7     2            4
8     3            1
9     3            2

或者你可以使用 pd.MultiIndex.from_product , 结果相同。

df = (
    pd.MultiIndex.from_product([range(1,31), range(1,5)], 
                               names=['date','time_of_day'])
      .to_frame(index=False)
)

product 来自 itertools

from itertools import product
df = pd.DataFrame(product(range(1,31), range(1,5)), columns=['date','time_of_day'])

https://stackoverflow.com/questions/70178114/

相关文章:

r - 使用具有功能真/假值的 dplyr 的 if_else 函数

F# - 从可区分联合中提取/解包预期案例类型值的最简洁方法?

python - 如何删除 selenium python 中的元素

javascript - Firebase 9 和 ref 函数与 Vue 组合

c++ - 将 C 识别的指针类型定义为内部 C++ 类

python - 是否有一个 Python 函数可以检查任何列表元素是否属于特定数据类型?

java - 设计模式问题: removing overuse of boolean functio

c++ - OpenGL 减慢 5k 点

java - 响应中未显示 Spring Boot 验证错误消息

javascript - 检查 JavaScript 中两个数组中的重复元素