擅长:python、mysql、java
<p>虽然不是最具python风格的方法,但它很有效</p>
<pre><code>import pandas as pd
from random import seed, randint
from collections import OrderedDict
import time
p1h = pd.period_range(start='2020-02-01 00:00', end='2040-03-04 00:00', freq='1h', name='p1h')
seed(1)
values = [randint(0,10) for p in p1h]
df = pd.DataFrame({'Values' : values}, index=p1h)
t1 = time.time()
for i in range(len(df['Values'])):
if (i+1)% 5 == 1:
df['Values'].iloc[i] = 0
elif (i+1) % 5 == 0:
df['Values'].iloc[i] = 1
t2 = time.time()
df.head(20)
print(t2-t1)
</code></pre>
<p>时间:8.770591259002686</p>
<p>方法2:</p>
<pre><code>import pandas as pd
from random import seed, randint
from collections import OrderedDict
import time
p1h = pd.period_range(start='2020-02-01 00:00', end='2040-03-04 00:00', freq='1h', name='p1h')
seed(1)
values = [randint(0,10) for p in p1h]
df = pd.DataFrame({'Values' : values}, index=p1h)
t1 = time.time()
df['Values'].iloc[range(0,len(df['Values']),5)] = 0
df['Values'].iloc[range(4,len(df['Values']),5)] = 1
t2 = time.time()
df.head(20)
print(t2-t1)
</code></pre>
<p>时间:0.009400367736816406</p>