在Azure Data Flows中根据列值生成多行重复数据
按休假天数拆分PTO记录为多行并计算工时
现有数据集
| Employee_Id | Days_off | PTO |
|---|---|---|
| 001A | 1 | 10/23/2023 12:00:00 |
| 002B | 2 | 10/28/2023 12:00:00 |
| 003C | 3 | 10/28/2023 12:00:00 |
目标数据集
| Employee_Id | Days_off | PTO | Hours |
|---|---|---|---|
| 001A | 1 | 10/23/2023 12:00:00 | 8 |
| 002B | 2 | 10/28/2023 12:00:00 | 16 |
| 002B | 2 | 10/28/2023 12:00:00 | 16 |
| 003C | 3 | 10/28/2023 12:00:00 | 24 |
| 003C | 3 | 10/28/2023 12:00:00 | 24 |
| 003C | 3 | 10/28/2023 12:00:00 | 24 |
解法1:Excel(Power Query)
无代码快速实现:
- 选中数据区域,点击「数据」→「从表格/区域」,导入Power Query编辑器。
- 选中
Days_off列,点击「转换」→「重复行」,选择「基于列值重复行」,确认后每行将按Days_off数值重复对应次数。 - 点击「添加列」→「自定义列」,输入公式
[Days_off] * 8,将列命名为Hours。 - 点击「关闭并上载」,直接生成目标格式数据。
解法2:Python Pandas
代码批量处理方案:
import pandas as pd # 构造数据(实际可通过pd.read_excel/pd.read_csv读取本地文件) df = pd.DataFrame({ 'Employee_Id': ['001A', '002B', '003C'], 'Days_off': [1, 2, 3], 'PTO': ['10/23/2023 12:00:00', '10/28/2023 12:00:00', '10/28/2023 12:00:00'] }) # 按Days_off值重复行 expanded_df = df.loc[df.index.repeat(df['Days_off'])] # 计算工时列 expanded_df['Hours'] = expanded_df['Days_off'] * 8 # 重置索引(可选,让索引从0开始) expanded_df = expanded_df.reset_index(drop=True) print(expanded_df)
运行后输出的DataFrame即为目标数据集。
内容的提问来源于stack exchange,提问作者Quintakov
相关产品推荐
相关产品推荐

