我有一个数据框,包含数据列、客户列和大小如下:

CustomerDateSize
Cust120/10/20214
Cust121/10/20215
Cust122/10/20216
Cust123/10/20216
Cust220/10/20214
Cust221/10/20215
Cust222/10/20216
Cust223/10/20216
Cust320/10/20214
Cust321/10/20215
Cust322/10/20216
Cust323/10/20216

我需要从客户那里提取每个第n个日期,然后删除其余日期.在本例中,每2秒:

|Customer|Date|Size|
|--------|----|----|
|Cust1   |20/10/2021|4|
|Cust1   |22/10/2021|6|
|Cust2   |20/10/2021|4|
|Cust2   |22/10/2021|6|
|Cust3   |20/10/2021|4|
|Cust3   |22/10/2021|6|

很抱歉格式不好,但表格格式不适用于第二个表格.

实际上是每10天一次,从最近一次开始.

df_10 = df.iloc[::10, :]

AttributeError: 'DataFrameGroupBy' object has no attribute 'iloc'

老实说,我根本不坚持使用groupby,但到目前为止还没有找到有效的解决方案.

非常感谢.

推荐答案

你可以使用:

df.loc[df.groupby('Customer').cumcount().mod(2).eq(0)]

输出:

   Customer        Date  Size
0     Cust1  20/10/2021     4
2     Cust1  22/10/2021     6
4     Cust2  20/10/2021     4
6     Cust2  22/10/2021     6
8     Cust3  20/10/2021     4
10    Cust3  22/10/2021     6

说明:

df.groupby('Customer').cumcount()为每个组创建一个计数([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]),然后mod(2)取模得到[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]eq(0)使能选择0值.

如果你想每N行取一次,从K的1开始(第一个是0):.mod(N).eq(K)

Python相关问答推荐

数据集中值的 Python 总和

在python中用浮点表示搜索和替换特定字符串

当你的模型不能过拟合一小批数据时,这意味着什么?

如何向输入字典添加别名?

如何在 Python 中替换字符串中的数字?

是否有更好的正则表达式来计算中文字母的数量并同时排除一些字符?

在 __next__() 中修改之前返回对象

如何将空格替换为字符串中的随机数

将负数四舍五入到最接近零的 1,000

如何编写python re.sub模式忽略单引号或双引号?

如何在字符的最后一个实例之后对文本文件进行排序?

django查询中的月份值

这种“贪婪” += 列表的行为是否得到保证?

如何为txt文件中的每2行创建一个csv行

在python中平方所需的时间

带有字符串染色体名称的交互式曼哈顿图

matplotlib 设置字体计算机现代和粗体

如何复制 pandas DataFrame 行并定期更改一列

TypeError:从文件中读取参数时,函数缺少所需的位置参数

Tensorflow 中的高效池化操作:自定义池化层