是否可以将 python pandas 中的 groupby 应用于已经分组的对象?

hakuna_code

我有一个如下所示的数据集:

  File_no    A   B       Date     Batch  State   

0    1       2    3    23-1-2019    2      3
1    2       7    6    23-1-2019    2      4
2    3       9    2    24-1-2019    1      2
3    5       6    3    24-1-2019    2      3
4    6       4    3    24-1-2019    1      4
5    8       2    3    25-1-2019    1      4

我想根据日期和批次对数据列“A”和“B”进行分组。然后根据文件编号的顺序对这些列的行进行移位。例如,在上面的数据框中缺少文件 4。

我能够实现轮班功能,但我无法单独为每个组执行此操作。

例如:6 & 8 个文件不按顺序排列,但它们来自不同的日期。因此不应执行移位,因为它缺少序列。

diff = data['File_no'].diff().ne(1).cumsum() 

grouped=data.groupby(['Date','Batch'])

grouped.apply(lambda data: data.groupby(diff)['A','B'].shift())

这将执行一个转变,只要有一个缺失的序列并且不考虑组。

预期输出:



  File_no    A   B       Date     Batch  State   

0    1       Nan  Nan    23-1-2019    2      3
1    2       2    3      23-1-2019    2      4
2    3       9    2      24-1-2019    1      2
3    5       Nan  Nan    24-1-2019    2      3
4    6       6    3      24-1-2019    1      4
5    8       2    3      25-1-2019    1      4

耶斯列

我认为您可以将带有系列的列传递给一个groupby

diff = data['File_no'].diff().ne(1).cumsum() 
data[['A','B']] = data.groupby(['Date','Batch',diff])['A','B'].shift()
print (data)

   File_no    A    B       Date  Batch  State
0        1  NaN  NaN  23-1-2019      2      3
1        2  2.0  3.0  23-1-2019      2      4
2        3  NaN  NaN  24-1-2019      1      2
3        5  NaN  NaN  24-1-2019      2      3
4        6  NaN  NaN  24-1-2019      1      4
4        8  NaN  NaN  25-1-2019      1      4

编辑:

r = np.arange(data['File_no'].min(), data['File_no'].max() + 1)
data = data.set_index('File_no').reindex(r)

diff = data.index.to_series().diff().ne(1).cumsum() 
data[['A','B']] = data.groupby(['Date','Batch',diff])['A','B'].shift()
data = data.dropna(how='all').reset_index()
print (data)
   File_no    A    B       Date  Batch  State
0        1  NaN  NaN  23-1-2019    2.0    3.0
1        2  2.0  3.0  23-1-2019    2.0    4.0
2        3  NaN  NaN  24-1-2019    1.0    2.0
3        5  NaN  NaN  24-1-2019    2.0    3.0
4        6  9.0  2.0  24-1-2019    1.0    4.0
5        8  NaN  NaN  25-1-2019    1.0    4.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将函数应用于python熊猫中的groupby对象

将加权平均函数应用于pandas groupby对象中的列,但权重总和为零

将排名应用于Pandas Groupby中的每个组

将功能应用于Pandas Groupby

Python Pandas将功能应用于分组数据框

将文本解析应用于Pandas中的分组数据

Python,Pandas:使用GroupBy.groups说明将其应用于其他分组

使用 GroupBy 沿分组变量的方向将函数应用于 Pandas

将函数应用于pandas groupby 数据框中的所有列

如何使用groupby将多个函数应用于Pandas中的多个列?

将GZIP压缩应用于Python Pandas中的CSV

一次将多种功能应用于Pandas groupby对象

将具有多个参数的函数应用于pandas groupby对象

将groupby应用于pandas datarame时添加Counters对象

将Groupby函数应用于python中的多列并进行计算

Pandas 如何将函数应用于 groupby().first()

将ewm功能应用于Pandas groupby

将pandas groupby的结果应用于多行

将函数序列应用于python中的对象

熊猫groupby,无法将iloc应用于已分组的对象

python pandas groupby:删除用于分组的列

了解Python Pandas中的groupby()

将条件函数应用于 Pandas 中按天分组的数据的有效方法

Python:将数据帧中的行分组并使用pandas groupby选择分组中的abs最大值

Python Pandas:替换groupby对象中的选择值

将几种功能应用于python中按数据框分组的功能

Python PANDAS:将函数应用于数据帧,并在数据帧中定义参数

使用Python / Pandas中元组列表中的索引/列将样式应用于DataFrame

是否可以在pandas groupby转换中访问列名?