<p>使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html#pandas.DataFrame.loc" rel="nofollow noreferrer">loc</a>按标签(<code>ID</code>列)访问一组行,然后使用<code>axis=0</code>计算每个时间段列的平均值。创建一个带有组名的<code>Series</code>,并将以前的结果附加到其中(这样组名将成为<code>dataframe</code>中的第一列)。将<code>Series</code>放在一个列表中,然后当对组的迭代完成时,转换为<code>dataframe</code>。要将结果放在单独的csv文件中,请使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html#pandas-dataframe-to-csv" rel="nofollow noreferrer">to_csv</a></p>
<pre><code>import pandas as pd
GROUPS = [
["UNITY", "SSOM", "PNSC"],
["SSOM", "PICT", "PIBTL"],
["SSOM", "PNSC", "PIBTL"],
]
df = pd.read_csv("sample.csv", sep="\s+")
df = df.set_index("ID")
data = []
for g in GROUPS:
group_mean = df.loc[g].mean(axis=0)
serie = pd.Series({"groupName":"-".join(g)}).append(group_mean)
data.append(serie)
data = pd.DataFrame(data)
print(data)
data.to_csv("output.csv", index=False)
</code></pre>
<p>数据的输出</p>
<pre><code> groupName daychange monthchange trimonthchange yearchange
0 UNITY-SSOM-PNSC -0.012215 0.128753 0.581699 1.320563
1 SSOM-PICT-PIBTL -0.016745 0.033494 0.558610 1.215170
2 SSOM-PNSC-PIBTL -0.017720 0.039057 0.597788 1.186550
</code></pre>