Python 如何在dask数据帧中添加一列,该列根据其他列中值的相似性包含一列值的平均值

Python 如何在dask数据帧中添加一列,该列根据其他列中值的相似性包含一列值的平均值,python,dataframe,mean,aggregation,dask,Python,Dataframe,Mean,Aggregation,Dask,我有一个非常大的CSV文件,它已经在Python中作为dask数据帧导入。我制作了一个小数据框来解释我的问题 import dask.dataframe as dd df = dd.read_csv("name and path of the file.csv") df.head() 输出: +----+----+----+----+ |col1|col2|col3|col4| +----+----+----+----+ | A |2001| 2 | 5 | +----+---

我有一个非常大的CSV文件,它已经在Python中作为dask数据帧导入。我制作了一个小数据框来解释我的问题

import dask.dataframe as dd
df = dd.read_csv("name and path of the file.csv")
df.head()
输出:

 +----+----+----+----+
 |col1|col2|col3|col4|
 +----+----+----+----+
 |  A |2001|  2 |  5 |
 +----+----+----+----+
 |  A |2001|  2 |  4 |
 +----+----+----+----+
 |  A |2001|  3 |  6 |
 +----+----+----+----+
 |  A |2002|  4 |  5 |
 +----+----+----+----+
 |  B |2001|  2 |  9 |
 +----+----+----+----+
 |  B |2001|  2 |  4 |
 +----+----+----+----+
 |  B |2001|  2 |  3 |
 +----+----+----+----+
 |  B |2001|  3 | 95 |
 +----+----+----+----+
如果
col1
中对应的值相同,我想添加另一列
col3\u mean
,其中包含
col3
的平均值

 +----+----+----+----+---------+
 |col1|col2|col3|col4|col3_mean|
 +----+----+----+----+---------+
 |  A |2001|  2 |  5 |   2.75  |
 +----+----+----+----+---------+
 |  A |2001|  2 |  4 |   2.75  |
 +----+----+----+----+---------+
 |  A |2001|  3 |  6 |   2.75  |
 +----+----+----+----+---------+
 |  A |2002|  4 |  5 |   2.75  |
 +----+----+----+----+---------+
 |  B |2001|  2 |  9 |   2.25  |
 +----+----+----+----+---------+
 |  B |2001|  2 |  4 |   2.25  |
 +----+----+----+----+---------+
 |  B |2001|  2 |  3 |   2.25  |
 +----+----+----+----+---------+
 |  B |2001|  3 | 95 |   2.25  |
 +----+----+----+----+---------+
我知道对于
pandas
中的此任务,我们可以使用:

df['col3_mean'] = df.groupby(['col1'])['col3'].transform('mean')
我在dask中使用了以下代码,但它返回
col3\u mean

df['col3_mean'] = df.groupby(df.col1).col3.mean()
我还使用了
df['index']=df.groupby(df.lable).col3.mean().collect()
,这不起作用。另外,下面的行只返回一个
pandas.core.series.series

df.groupby(df.col1).col3.mean().collect()

发布我的问题后,我可以找到答案:

s = df.groupby(df.col1).col3.mean().compute()
#s is pandas series
df['col3_mean'] = df['col1'].map(s)
但是,它不适用于我的大型数据帧。它永远运行,我必须重新启动我的电脑


请告诉我您是否有其他解决方案

以下代码适用于我的大数据

agg = df.groupby(['lable']).open_cap.aggregate(["mean"])
agg.columns = ['col3_mean']
df = df.merge(agg.reset_index(), on="lable", how="left")
如果您有任何问题,请添加您的答案