dataframe按照相同列求和取平均值
时间: 2023-09-19 09:12:10 浏览: 109
您可以使用 pandas 库来操作 dataframe,并使用 groupby() 方法按照相同列求和,然后使用 mean() 方法取平均值。例如,假设您的 dataframe 名称为 df,要按照列名为 'column_name' 的列求和并取平均值,代码如下:
```
df.groupby('column_name').sum().mean()
```
其中,sum() 方法对相同列进行求和,groupby() 方法按照相同列分组,mean() 方法对每个分组求平均值。
相关问题
有一列整数列A= [1, 2, 2, 3, 4, 5, 5, 5, 6, 7, 7]的DatraFrame,删除数值重复的行 2) 一个全数值DatraFrame,每个数字减去该行的平均数 3) 一个有5列的DataFrame,求哪一列的和最小 4) 给定DataFrame,求A列每个值的前3的B的值的和 5) 给定DataFrame,有列A, B,A的值在1-100(含),对A列每10步长,求对应的B的和 6) 给定DataFrame,计算每个元素至左边最近的0(或者至开头)的距离,生成新列y 7) 一个全数值的DataFrame,返回最大3个值的坐标 8) 给定DataFrame,将负值代替为同组的平均值 9) 计算3位滑动窗口的平均值,忽略NAN 10) 创建Series s,将2015所有工作日作为随机值的索引 11) 所有礼拜三的值求和 12) 求每个自然月的平均数 13) 每连续4个月为一组,求最大值所在的日期 14) 创建2015-2016每月第三个星期四的序列
1) df = pd.DataFrame({'A': [1, 2, 2, 3, 4, 5, 5, 5, 6, 7, 7]})
df.drop_duplicates(inplace=True)
2) df = df.sub(df.mean(axis=1), axis=0)
3) df.sum().idxmin()
4) df.groupby('A')['B'].apply(lambda x: x.nlargest(3).sum())
5) df.groupby(pd.cut(df['A'], np.arange(0, 101, 10)))['B'].sum()
6) df['y'] = df.groupby((df['A'] != df['A'].shift()).cumsum()).cumcount()
7) df.unstack().nlargest(3).index.tolist()
8) df[df < 0] = df.groupby('group').transform('mean')
9) df.rolling(window=3, min_periods=1).mean()
10) s = pd.Series(np.random.rand(len(pd.date_range('2015-01-01', '2015-12-31', freq='B'))), index=pd.date_range('2015-01-01', '2015-12-31', freq='B'))
11) s[s.index.weekday == 2].sum()
12) df.groupby(pd.Grouper(freq='M')).mean()
13) df.groupby(pd.Grouper(freq='4M')).max()
14) pd.date_range('2015-01-01', '2016-12-31', freq='WOM-3THU')
Python的df = pd.DataFrame([['日期1','代码1', 1,2.5],['日期1','代码2', 1, 2.1],['日期2','代码3', 1,4],['日期2','代码4', 1,4.3]] , columns=['日期','代码' ,'累计','涨幅']),要求日期相同的合成一个,代码用列表的方式,如['代码1', '代码2'],累计列求和,涨幅列求和后平均,怎么写?
你可以使用`groupby`函数对日期进行分组,然后对每个分组进行聚合计算:
```python
import pandas as pd
df = pd.DataFrame([['日期1','代码1', 1,2.5],['日期1','代码2', 1, 2.1],['日期2','代码3', 1,4],['日期2','代码4', 1,4.3]],
columns=['日期','代码' ,'累计','涨幅'])
# 将代码列转换为列表
df['代码'] = df['代码'].apply(lambda x: [x])
# 分组并聚合计算
df = df.groupby('日期').agg({'代码': 'sum', '累计': 'sum', '涨幅': 'mean'}).reset_index()
print(df)
```
输出结果为:
```
日期 代码 累计 涨幅
0 日期1 [代码1, 代码2] 2 2.30
1 日期2 [代码3, 代码4] 2 4.15
```
这里使用了`agg`函数对每列进行不同的聚合操作,其中`'代码': 'sum'`表示将代码列进行列表拼接,`'累计': 'sum'`表示对累计列求和,`'涨幅': 'mean'`表示对涨幅列求和后取平均值。然后使用`reset_index`函数将日期列变回普通列。
阅读全文