要创建一个包含已经存在的列中最近3次出现True的索引的列表的DataFrame列,可以按照以下步骤进行操作:
import pandas as pd
df = pd.DataFrame({'A': [False, True, False, True, True, False, False]})
df['B'] = df['A'].rolling(3).apply(lambda x: list(df.index[x]), raw=True).sum()
这将创建一个新的列'B',其中包含最近3次出现True的索引的列表。如果不足3次出现True,则列表将包含所有已经出现True的索引。
以下是对上述代码的解释:
df['A']
:选择要检查的列'A'。rolling(3)
:创建一个滚动窗口,窗口大小为3。apply(lambda x: list(df.index[x]), raw=True)
:对滚动窗口中的每个窗口应用lambda函数,该函数将窗口中的索引转换为列表。sum()
:将所有窗口中的列表连接成一个大列表。最后,你可以打印DataFrame来查看结果:
print(df)
完整的代码示例如下:
import pandas as pd
df = pd.DataFrame({'A': [False, True, False, True, True, False, False]})
df['B'] = df['A'].rolling(3).apply(lambda x: list(df.index[x]), raw=True).sum()
print(df)
这是如何创建一个包含已经存在的列中最近3次出现True的索引的列表的DataFrame列的完整答案。
领取专属 10元无门槛券
手把手带您无忧上云