擅长:python、mysql、java
<p>您可以将<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html" rel="nofollow noreferrer">pandas goupby</a>与<a href="https://pandas.pydata.org/pandas-docs/version/0.25/reference/api/pandas.DataFrame.apply.html" rel="nofollow noreferrer">apply</a>一起使用,让一个自定义函数来完成这项工作,而不是循环。<br/>
在这个例子中,我使用了lambda函数。你知道吗</p>
<pre><code>outcol = df.groupby('identifier').apply(lambda x : pd.Series([' - '.join(x['aggregation'].iloc[0:i]) for i in range(1,len(x)+1)]))
outcol.reset_index(drop=True, inplace=True)
df['newAgg'] = outcol
</code></pre>
<p><code>groupby</code>自动选择应用自定义函数的具有相同<code>'identifier'</code>值的数据帧子集。<br/>
在本例中,我使用理解列表来选择要连接的字符串。<br/>
需要<code>reset_index</code>来摆脱多索引,以便将列连接回原始数据帧。你知道吗</p>
<p>最终结果是:</p>
<pre><code> requestTime identifier aggregation newAgg
0 38:00.5 123 abc abc
1 38:02.2 123 def abc - def
2 38:03.9 123 ghi abc - def - ghi
3 38:04.9 456 abc abc
</code></pre>