gpt4 book ai didi

python - 使用 Python 将计划转换为综合报告

转载 作者:行者123 更新时间:2023-12-04 10:13:20 27 4
gpt4 key购买 nike

我正在尝试将具有以下格式的时间表转换为报告格式。

目前数据存储如下:

Person Name    Jun 1    Jun 2    Jun 3   Jun 4   Jun 5   Jun 6   Jun 7   Jun 8   Jun 9   Jun 10   ...
John Smith X X X X O O O X X X ...
Aaron Roberts O O X X X X O O O O ...
Jess Lewis O O O O X X X X X X ...
Edgar Blue X X X X X O O O O X ...
Lara Irvin X X O O O O X X X X ...

X 代表他们“开启”的天数,O 代表他们关闭的天数。

我想要的是运行一个 python 脚本,以这种格式的报告总结时间表:
Person Name          From:          To:
John Smith Jun 1 Jun 4
John Smith Jun 8 Jun 10
Aaron Roberts Jun 3 Jun 6
Jess Lewis Jun 5 Jun 10
Edgar Blue Jun 1 Jun 5
Edgar Blue Jun 10 Jun 13
Lara Irvin Jun 1 Jun 2
Lara Irvin Jun 7 Jun 10

我尝试过的是创建一个唯一的名称列表
names = ["John Smith", "Aaron Roberts", "Jess Lewis", "Edgar Blue", "Lara Irvin"]

然后做
for name in names:
df.iloc["Person Name"] == name

然后我不知道如何继续,我正在尝试查看 i 位置是 X 还是 O,然后查看 i-1 位置是 X 还是 O

然后...
if i == "X" && i-1 == "O"

在另一个表的“发件人:”列中填充该标题日期

和...
if == "O" && i-1 == "X"

在另一个表的“收件人:”列中填充该标题日期

然后在所有“人名”和所有日期中使用嵌套的 for 循环重复相同的过程。

预先感谢您的任何帮助。

最佳答案

这将需要 cumsum创建子组然后我们堆叠,groupbyagg

df=df.set_index('PersonName')

s1=df.eq('O').cumsum(1).stack().reset_index()

s=s1[df.stack().ne('O').values].groupby(['PersonName',0])['level_1'].agg(['first','last']).reset_index(level=1,drop=True)

s
first last
PersonName
AaronRoberts Jun3 Jun6
EdgarBlue Jun1 Jun5
EdgarBlue Jun10 Jun10
JessLewis Jun5 Jun10
JohnSmith Jun1 Jun4
JohnSmith Jun8 Jun10
LaraIrvin Jun1 Jun2
LaraIrvin Jun7 Jun10

关于python - 使用 Python 将计划转换为综合报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61209145/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com