首先,这篇文章的标题可能不公平地回答了这个问题,所以我对此表示谦虚的歉意.

这里有一个问题:

Date Type Value
2024-03-11 3 3
2024-3-11 4 5
2024-03-12 3 3
2024-3-12 4 5
2024-3-12 5 5
2024-03-13 3 3
2024-3-13 4 5
2024-3-13 5 2
2024-3-14 5 5

类型=[3,4,5]

在Pandas中,有没有一种简单的方法可以从上面的df创建一个新的df,其中只有当日期包含列表中所有元素的值时才会出现数据? 这意味着reuslant df应该只包含日期12、13的数据,因为原始df具有Type数组中的元素的值? 谢谢

推荐答案

使用set,用groupby.agg+issubset聚合,用isin+boolean indexing过滤:

Type = {3,4,5}

df['Date'] = pd.to_datetime(df['Date'])

keep = df.groupby('Date')['Type'].agg(Type.issubset)

out = df[df['Date'].isin(keep.index[keep])]

groupby.transform的变种:

Type = {3,4,5}

df['Date'] = pd.to_datetime(df['Date'])

out = df[df.groupby('Date')['Type'].transform(Type.issubset)]

输出:

        Date  Type  Value
2 2024-03-12     3      3
3 2024-03-12     4      5
4 2024-03-12     5      5
5 2024-03-13     3      3
6 2024-03-13     4      5
7 2024-03-13     5      2

中间体:

# keep
Date
2024-03-11    False
2024-03-12     True
2024-03-13     True
2024-03-14    False
Name: Type, dtype: bool

# df['Date'].isin(keep.index[keep])
# or
# df.groupby('Date')['Type'].transform(Type.issubset)
0    False
1    False
2     True
3     True
4     True
5     True
6     True
7     True
8    False
Name: Type, dtype: bool

Python相关问答推荐

返回nxon矩阵的diag元素,而不使用for循环

使用SciPy进行曲线匹配未能给出正确的匹配

通过Selenium从页面获取所有H2元素

什么相当于pytorch中的numpy累积ufunc

图像 pyramid .难以创建所需的合成图像

实现神经网络代码时的TypeError

如何合并两个列表,并获得每个索引值最高的列表名称?

为什么if2/if3会提供两种不同的输出?

Numpyro AR(1)均值切换模型抽样不一致性

如果有2个或3个,则从pandas列中删除空格

判断Python操作:如何从字面上得到所有decorator ?

Js的查询结果可以在PC Chrome上显示,但不能在Android Chrome、OPERA和EDGE上显示,而两者都可以在Firefox上运行

简单 torch 模型测试:ModuleNotFoundError:没有名为';Ultralytics.yolo';

当HTTP 201响应包含 Big Data 的POST请求时,应该是什么?  

ModuleNotFoundError:Python中没有名为google的模块''

当我定义一个继承的类时,我可以避免使用`metaclass=`吗?

将像素信息写入文件并读取该文件

.awk文件可以使用子进程执行吗?

为什么在生成时间序列时,元组索引会超出范围?

有什么方法可以在不对多索引DataFrame的列进行排序的情况下避免词法排序警告吗?