gpt4 book ai didi

python - 如何过滤多年数据框以保留所有年份的值的行

转载 作者:行者123 更新时间:2023-12-04 09:33:25 27 4
gpt4 key购买 nike

我有一个多年的每日数据框,它在不同的年份(Col2)中有不同的实体(Col1)。我正在尝试过滤数据框,使其仅保留那些在指定年份中的每一年都有值的行。
(我从日期时间索引创建了 Col2,认为它会使过滤过程更容易)
换句话说,我正在尝试设计一个条件过滤器,其中保留满足另一列中条件的列值。
这是我的数据框:

Date    Col1 Col2 Col3 Col4
1/1/16 M 2016 34 a
2/2/16 M 2016 35 f
3/3/16 M 2016 45 d
1/1/17 S 2017 66 ff
2/2/17 S 2017 66 mn
1/1/18 T 2018 78 jh
2/2/18 T 2018 789 kk
1/1/17 M 2017 100 f
2/2/17 S 2017 2020 jj
2/2/18 M 2018 3005 m
实体 M、S 和 T 记录了 2016-2019 年的值,但只有 M 在所有三年中都有值。
因此,生成的数据帧应如下所示:
Date    Col1 Col2 Col3 Col4
1/1/16 M 2016 34 a
2/2/16 M 2016 35 f
3/3/16 M 2016 45 d
1/1/17 M 2017 100 f
2/2/18 M 2018 3005 m
我试图通过以下代码行来计算逻辑,但没有工作:
(1)
years = [2016,2017,2018]

for station in df_in['Col1']:
years = [2016,2017,2018]
if df_in['Col2'].isin(years).any():
df = df_in
else:
df = df_in.drop(df_in[df_in.Col1].index)
或者
(2)
df= df_in['Col1'].apply(lambda x: x in df_in['year'].isin(years))
或者
(3)
df = df_in.loc[(df_in['Col1']) & (df_in['Col2'].isin(years))]
实现这一目标的好方法是什么?
任何帮助都感激不尽。

最佳答案

查看 filter + groupby

s=df.groupby('Col1').filter(lambda x : pd.Series([2016,2017,2018]).isin(x['Col2']).all())
Date Col1 Col2
0 1/1/16 M 2016
1 2/2/16 M 2016
2 3/3/16 M 2016
7 1/1/17 M 2017
9 2/2/18 M 2018

关于python - 如何过滤多年数据框以保留所有年份的值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62716394/

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