我有一个python脚本,它从csv文件中读入数据

代码运行得很好,但每次运行我都会收到这样的警告消息:

 FutureWarning: A grouping was used that is not in the columns of the DataFrame and so was excluded from the result. This grouping will be included in a future version of pandas. Add the grouping as a column of the DataFrame to silence this warning.

这条消息让我看到了这个代码:

 formatted_df = {k: 'first' for k in df.columns} | {'Commodity': tuple, 'FixedPriceStrike': tuple, 'Quantity': tuple}
 group = (df['TradeID'].str.strip().ne('') | df['TradeDate'].str.strip().ne('')).cumsum()
 df = df.groupby(group, as_index=False).agg(formatted_df)

以下是一些示例数据:

TradeID  TradeDate  Commodity  StartDate   ExpiryDate FixedPrice Quantity MTMValue
-------- ---------- ---------  ---------   ---------- ---------- -------- ---------
 aaa   01/01/2024   commodity1 01/01/2024  01/01/2024  10.00        10      100.00 
                    commodity2                         10.00        10          
 bbb   01/01/2024   commodity1 01/01/2024  01/01/2024  10.00        10      100.00 
                    commodity2                         10.00        10          
 ccc   01/01/2024   commodity1 01/01/2024  01/01/2024  10.00        10      100.00 
                    commodity2                         10.00        10          

这里是预期的输出:

TradeID  TradeDate  Commodity  StartDate   ExpiryDate FixedPrice Quantity MTMValue
-------- ---------- ---------  ---------   ---------- ---------- -------- ---------
 aaa   01/01/2024   (com1,com2) 01/01/2024  01/01/2024  (10,10)   (10,10)   100.00 
 bbb   01/01/2024   (com1,com2) 01/01/2024  01/01/2024  (10,10)   (10,10)   100.00 
 ccc   01/01/2024   (com1,com2) 01/01/2024  01/01/2024  (10,10)   (10,10)   100.00          

我不确定如何消除这个警告,因为我不想只将它告诉我的任何分组添加到数据帧中.对于如何消除此警告或采用不同的方法获得所需输出,有什么建议吗?

推荐答案

事情是这样的.您创建了一个external分组器,并且在对DataFrame进行分组时使用它之后,您因为有as_index=False个参数而丢弃了组标识符,因此您失go 了在聚合后跟踪每个组的能力.为防止出现这种情况,计划在这种情况下将Grouper存储为新列.这就是这一警告的目的.

我可以看到两种方法来 suppress FutureWarnigs,而无需添加新的列作为分组依据.一种是使用warnings.simplefilter:

warnings.simplefilter(action='ignore', category=FutureWarning)

第二个选项是同意在聚合期间将Grouper值用作新索引,然后删除该索引:

df = df.groupby(group).agg(formatted_df).reset_index(drop=True)

Python相关问答推荐

将numpy数组存储在原始二进制文件中

Odoo 14 hr. emergency.public内的二进制字段

Gekko:Spring-Mass系统的参数识别

数据抓取失败:寻求帮助

OR—Tools CP SAT条件约束

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

Odoo 16使用NTFS使字段只读

用砂箱开发Web统计分析

无法连接到Keycloat服务器

Pandas GroupBy可以分成两个盒子吗?

在Python中调用变量(特别是Tkinter)

Matplotlib中的字体权重

将一个双框爆炸到另一个双框的范围内

没有内置pip模块的Python3.11--S在做什么?

如何在信号的FFT中获得正确的频率幅值

如何获得满足掩码条件的第一行的索引?

仅取消堆叠最后三列

根据过滤后的牛郎星图表中的数据计算新系列

如何将django url参数传递给模板&S url方法?

如何在微调Whisper模型时更改数据集?