我正在构建一个机器学习模型,我需要用合成数据填充一个测试数据框。我有目前看起来像这样的时间序列数据:
Date DayOfWeek Unit
2022-10-01 7 A
2022-10-02 1 A
2022-10-03 2 A
我需要复制所有日期行,但每个“单位”(A、B、C、D)都需要一行,如下所示:
Date DayOfWeek Unit
2022-10-01 7 A
2022-10-01 7 B
2022-10-01 7 C
2022-10-01 7 D
2022-10-02 1 A
2022-10-02 1 B
2022-10-02 1 C
2022-10-02 1 D
2022-10-03 2 A
2022-10-03 2 B
2022-10-03 2 C
2022-10-03 2 D
我找到了一个 previous answer这告诉我如何重复:
df.reindex(df.index.repeat(4)).reset_index(drop=True)
最好的方法是什么,而不是重复所有内容,只重复“日期”和“星期几”,但在“单位”上填充 A 到 D?
最佳答案
建议使用 itertools.product
目的:
from itertools import product
df = pd.DataFrame(
data=product(
pd.Series(pd.date_range('2022-10-01', '2022-10-03', freq='D')),
"ABCD"
),
columns=("Date", "Unit"),
)
df["DayOfWeek"] = df["Date"].dt.dayofweek.add(1) # To Have Day of Week Starting with 1
df = df[["Date", "DayOfWeek", "Unit"]]
print(df)
输出:
Date DayOfWeek Unit
0 2022-10-01 6 A
1 2022-10-01 6 B
2 2022-10-01 6 C
3 2022-10-01 6 D
4 2022-10-02 7 A
5 2022-10-02 7 B
6 2022-10-02 7 C
7 2022-10-02 7 D
8 2022-10-03 1 A
9 2022-10-03 1 B
10 2022-10-03 1 C
11 2022-10-03 1 D
关于python - Pandas :从一行创建多行 'dummy data',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73899974/