如果最后的N (3)行或当前中的任何一行或当前在一个组中为true,则我希望输出为True。
这就是我一直在尝试这样做的,要么是使用transform,要么是因为它只有一列。
import pandas as pd
data = [
['False', 'CLE',],
['False', 'CLE'],
['True', 'CLE'],
['False', 'MON'],
['False', 'CLE'],
['False', 'CLE'],
['False', 'CLE'],
['False', 'CLE']
]
# Create the pandas DataFrame
df = pd.DataFrame(data,
columns=["bool", "city"])
df['x'] = df.groupby(['city'])['bool']\
.transform(lambda x: x==True &
x.index\
.isin(x.index[-2:]))产出应是:
False
False
True
False
True
True
False
False发布于 2021-02-05 00:56:51
您可以在组中获取您的bool列的rolling和,然后使用astype(bool)将其设置为True,如果该行或以前的任何N是True (即任何非零和)。首先,我们需要使您的值Boolean
df['bool'] = df['bool'].map({'False': False, 'True': True})
df['x'] = (df.groupby('city')['bool'].rolling(3, min_periods=0)
.sum()
.astype(bool)
.reset_index(0, drop=True)) bool city x
0 False CLE False
1 False CLE False
2 True CLE True
3 False MON False
4 False CLE True
5 False CLE True
6 False CLE False
7 False CLE Falsehttps://stackoverflow.com/questions/66056039
复制相似问题