Python 如何在dask数据帧中添加一列,该列根据其他列中值的相似性包含一列值的平均值
我有一个非常大的CSV文件,它已经在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 | +----+---
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")
如果您有任何问题,请添加您的答案