<p>试试这个。对某些事情使用了简单的方法,如果您想更改,请随意更改:</p>
<pre class="lang-py prettyprint-override"><code>import datetime
import time
import pandas as pd
def func(PlugInTime, PlugOutTime, DeliveredEnergy, ChargeDuration):
# inTime calculation
inTime = str(PlugInTime).split(' ')
d = inTime[0].split('-')
t = inTime[1].split(':')
Timein = int(datetime.datetime(int(d[0]), int(d[1]), int(d[2]), int(t[0]), int(t[1]), int(t[2])).strftime('%s'))
# outTime calculation
outTime = str(PlugOutTime).split(' ')
d = outTime[0].split('-')
t = outTime[1].split(':')
Timeout = int(datetime.datetime(int(d[0]), int(d[1]), int(d[2]), int(t[0]), int(t[1]), int(t[2])).strftime('%s'))
# energy
energy = float(DeliveredEnergy)
# charge
h, m, s = str(ChargeDuration).split(':')
charge = int(h) * 3600 + int(m) * 60 + int(s)
val = charge
# hourly
add = 3600
# chargeval
if add < val:
chargeval = (add/val)*energy
list_ = []
while charge - add >= 0:
Timein += add
t_ = time.localtime(Timein)
lt = [time.strftime("%Y-%m-%d %H:%M:%S", t_), PlugOutTime, chargeval, ChargeDuration]
list_.append(lt)
charge -= add
if charge:
t_ = time.localtime(Timein+charge)
lt = [time.strftime("%Y-%m-%d %H:%M:%S", t_), PlugOutTime, (charge/val) * energy, ChargeDuration]
list_.append(lt)
return list_
if __name__ == '__main__':
l = [['2019-01-02 05:53:00', '2019-01-02 14:38:00', '36.0', '05:57:00']]
# input dataframe
df = pd.DataFrame(l, columns = ['PlugInTime', 'PlugOutTime', 'DeliveredEnergy', 'ChargeDuration'])
list_ = []
for ind, row in df.iterrows():
l = func(row['PlugInTime'], row['PlugOutTime'], row['DeliveredEnergy'], row['ChargeDuration'])
list_.extend(l)
# printing the output for a row
for i in l:
print(i)
# output dataframe
df_out = pd.DataFrame(list_, columns = ['PlugInTime', 'PlugOutTime', 'DeliveredEnergy', 'ChargeDuration'])
</code></pre>
<p>输出:</p>
<pre><code>['2019-01-02 06:53:00', '2019-01-02 14:38:00', 6.050420168067228, '05:57:00']
['2019-01-02 07:53:00', '2019-01-02 14:38:00', 6.050420168067228, '05:57:00']
['2019-01-02 08:53:00', '2019-01-02 14:38:00', 6.050420168067228, '05:57:00']
['2019-01-02 09:53:00', '2019-01-02 14:38:00', 6.050420168067228, '05:57:00']
['2019-01-02 10:53:00', '2019-01-02 14:38:00', 6.050420168067228, '05:57:00']
['2019-01-02 11:50:00', '2019-01-02 14:38:00', 5.747899159663865, '05:57:00']
</code></pre>