【发布时间】:2020-04-28 13:19:36
【问题描述】:
我想在现有数据框中创建一个新列,其中每行中的值取决于相邻列中的某些规则。让我举个例子。 我有以下字典:
d1={"commence_time":["12/6/2019 14:00", "12/7/2019 17:30",
"12/7/2019 17:30","12/8/2019 19:30",
"12/9/2019 19:30","12/28/2019 15:00",
"12/28/2019 15:00","12/28/2019 15:00"],
"value1":["5","5","5","5","5","5","5","5"]}
我创建了以下 DataFrame:
df1=pd.DataFrame(data=d1)
导致:
commence_time value1
0 12/6/2019 14:00 5
1 12/7/2019 17:30 5
2 12/7/2019 17:30 5
3 12/8/2019 19:30 5
4 12/9/2019 19:30 5
5 12/28/2019 15:00 5
6 12/28/2019 15:00 5
7 12/28/2019 15:00 5
我想创建另一个名为 value2 的列,其中适用以下规则:如果开始时间之后是下一行中不同的开始时间,则第一行中的 value2 应该等于 value1。如果开始时间与下一行(甚至可能是后续行)中的开始时间完全相同,则 value2 中的数字是 value1 与 5 的总和。预期结果是:
commence_time value1 value2
0 12/6/2019 14:00 5 5
1 12/7/2019 17:30 5 10
2 12/7/2019 17:30 5 10
3 12/8/2019 19:30 5 5
4 12/9/2019 19:30 5 5
5 12/28/2019 15:00 5 10
6 12/28/2019 15:00 5 10
7 12/28/2019 15:00 5 10
真的不知道如何解决这个问题,所以我没有真正尝试任何事情。建议表示赞赏。
【问题讨论】:
-
我想我有点困惑这些值是否总是相同,或者如果最后一组是 5、6、6 会发生什么。输出应该是 11,12,12 还是 11,11,12,或者不同的东西
-
事实上,如果最后一组值是 5,6,6,那么将 5 相加将得到 10,11,11。 “value1”中的值并不总是相同的来回答问题。为了简单和可读性,我输入了相同的值,但我意识到这可能会给可能的解决方案带来混乱。
-
数据框的最后一行应该发生什么?
-
如果开始时间与前一行不同,则从“value1”列复制值。如果不是(即开始时间与上一行相同),则值 2 与 5 相加。
-
是的,这些行加起来 5。是的,这个数字与 value1 无关
标签: python pandas if-statement conditional-statements