我有一个非常大的数据帧,用于一年中每一秒的电池放电时间表。在
基本的系列事件是
数据帧看起来像这样。。。(请原谅我糟糕的格式)
Index | Freq | Case | Battery OP | Power Required | Battery Energy | SOC | Response timer | Charge Power |
01/01/2016 | 49.5862 | C | Discharging | 300.512 | 1500 | 99.85 | 3 | 0 |
01/01/2016 | 49.5862 | C | Charging | 0 | 1500 | 99.85 | 3 | 1500 |
我目前正在使用for循环和一些if/elseif语句遍历每一行,检查电池是否需要充电。在
不过,我觉得效率很低。我可能快没记性了,要不然就得几天才能完成。在
我让它运行了一个周末,它仍然没有完成
我确定有更好的方法来做这个,但我不知道。问题是它必须是连续的。每秒钟需要根据电池的电量和之前的SOC%/能量计算充电状态或电池能量。在
这里有可复制的代码(尽量减少)
^{pr2}$
由于内存不足,最好的方法是使用panda数据帧的apply方法。这种方法称为矢量化。在
一个例子如下
df.apply(numpy.sqrt, axis=1)
您可以查看文档以了解更多详细信息:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html#pandas.DataFrame.apply
这就是我可能重新编写代码的方法。我只是简单地将最初的7列简化为一个字典,然后使用
pd.DataFrame()
将它们转换为一个适当的数据帧。然后,我只需在遍历构造的数据帧时应用if...elif
语句。在相关问题 更多 >
编程相关推荐