gpt4 book ai didi

pandas dataframe 按特定列中的值序列过滤

转载 作者:行者123 更新时间:2023-12-02 20:16:56 25 4
gpt4 key购买 nike

我有一个数据框

A B C

1 2 3

2 3 4

3 8 7

我只想获取 C 列中有 3,4 序列的行(在这种情况下 - 前两行)

这样做的最佳方式是什么?

最佳答案

您可以使用rolling 来处理任何模式的通用解决方案:

pat = np.asarray([3,4])
N = len(pat)

mask= (df['C'].rolling(window=N , min_periods=N)
.apply(lambda x: (x==pat).all(), raw=True)
.mask(lambda x: x == 0)
.bfill(limit=N-1)
.fillna(0)
.astype(bool))

df = df[mask]
print (df)
A B C
0 1 2 3
1 2 3 4

解释:

  • 使用rolling.apply和测试模式
  • mask0替换为NaN
  • 使用 bfilllimit 来用前一个 NAN 值填充前一个值
  • fillna NaN0
  • 最后由 astype 转换为 bool

关于pandas dataframe 按特定列中的值序列过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52183252/

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