【发布时间】:2023-02-06 00:23:07
【问题描述】:
我有一个 df,其中包含时间列“t”、“第一”和“第二”。 (这里为了简单起见,我在 t 列中使用了数字,但它们将是日期时间对象或日期字符串)
t first second
1 grey red
2 green red
3 red red
4 grey green
5 green red
6 grey green
7 green red
8 red red
它可以这样创建:
import pandas as pd
dfx = pd.DataFrame(
{
'time': [1,2,3,4,5,6,7,8],
'first': ['grey', 'green', 'red', 'grey', 'green', 'grey', 'green', 'red'],
'second': ['red', 'red', 'red', 'green', 'red', 'green', 'red', 'red']
}
)
我需要选择第一个等于绿色的行,然后添加下一个第二个等于绿色的行。生成的 df 将如下所示:
t first t_second
2 green 4
5 green 6
7 green NaN
我怎么能做到这一点?
我发现了一个类似的问题here,但它涉及布尔值。我并不完全理解答案,但据我所知,它不能以类似的方式处理多个分类值。我也无法转换为布尔值,因为我将在颜色类别中有多个选项。
【问题讨论】:
-
如果在
second中有一个绿色之前first中有 2 个绿色怎么办?这 2 个果岭会得到相同的t_second值吗?而且我假设您想对所有颜色都这样做,而不仅仅是绿色?