【问题标题】:How to create miultiple rows from a single row?如何从一行创建多行?
【发布时间】:2023-02-02 00:57:45
【问题描述】:

我正在尝试提出一个程序,该程序根据列中的值为每一行创建多行和多列。

这是我的数据

import pandas as pd

data = pd.read_excel("test data.xlsx")
Id #ofweeks Manhours StartDate EndDate Startingyear StartingWeek
aaa 2 10 1/15/2023 1/29/2023 2023 3
bbb 3 12 2/12/2023 3/05/2023 2023 7

该表需要扩展,以便每一行都扩展周数。 需要为每周的工时数添加列,并为每个 Id 添加列数的周数。

结果应该是这样的

Id #ofweeks Manhours StartDate EndDate Startingyear StartingWeek WeekCount Labor Week#
aaa 2 10 1/15/2023 1/29/2023 2023 3 1 5 3
aaa 2 10 1/15/2023 1/29/2023 2023 3 2 5 4
bbb 3 12 2/12/2023 3/05/2023 2023 7 1 4 7
bbb 3 12 2/12/2023 3/05/2023 2023 7 2 4 8
bbb 3 12 2/12/2023 3/05/2023 2023 7 3 4 10

我能够使用以下方法扩展表格:

data2 = data.loc[data.index.repeat(data["#ofweeks"])].reset_index(drop=True)
data2

我还使用以下方法添加了 Labor:

data2["Labor"] = data2["Manhours"]/data3["#ofweeks"]
data2

如何添加 WeekCount 和 Week# 列?

此外,我如何计算超过一个日历年的记录?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    使用范围函数,创建一个名为“WeekCount”的新列并为每个“#ofweeks”重复。

    data2['WeekCount'] = list(range(1, data2['#ofweeks'].max() + 1)) * len(data2['#ofweeks'].unique())
    data2['WeekCount'] = data2['WeekCount'][:len(data2)]
    

    通过组合“StartingWeek”和“WeekCount”列创建一个新列“Week#”。

    data2['Week#'] = data2['StartingWeek'] + data2['WeekCount'] - 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 2014-09-04
      • 2015-06-05
      相关资源
      最近更新 更多