擅长:python、mysql、java
<p>使用<code>pandas</code>,它是专门为做这类事情而设计的,这意味着您可以用少量代码来表达它们(您要做的是一行代码)。此外,当给定大量值时,它将比任何其他方法都快得多。你知道吗</p>
<pre><code>import pandas as pd
a=[(3, '655'),
(3, '645'),
(3, '641'),
(4, '602'),
(4, '674'),
(4, '620')]
res = pd.DataFrame(a).astype('float').groupby(0).mean()
print(res)
</code></pre>
<p>提供:</p>
<pre><code> 1
0
3 647
4 632
</code></pre>
<p>下面是一个多行版本,显示发生了什么:</p>
<pre><code>df = pd.DataFrame(a) # construct a structure containing data
df = df.astype('float') # convert data to float values
grp = df.groupby(0) # group the values by the value in the first column
df = grp.mean() # take the mean of each group
</code></pre>
<p>此外,如果您想使用<code>csv</code>文件,就更容易了,因为您不需要自己解析<code>csv</code>文件(我对不知道的列使用虚构的名称):</p>
<pre><code>import pandas as pd
df = pd.read_csv('file.csv', columns=['col0', 'col1', 'col2', 'date', 'col4', 'data'], index=False, header=None)
df['month'] = pd.DatetimeIndex(df['date']).month
df = df.loc[:,('month', 'data')].groupby('month').mean()
</code></pre>