【发布时间】:2021-03-03 15:17:36
【问题描述】:
我有一个数据框,其中有一列中有许多重复值。我想创建另一个数据框,该数据框只有该值的一个实例与原始数据框另一列的匹配值的平均值配对。 示例:
data = [[1,1],[1,2],[2,2],[3,3],[3,1],[2,3],[1,5],[2,7],[3,9]]
df = pd.DataFrame(data, columns = ['A', 'B'])
A B
0 1 1
1 1 2
2 2 2
3 3 3
4 3 1
5 2 3
6 1 5
7 2 7
8 3 9
我想对与同一列 A 值匹配的 B 列值进行平均。然后有一个如下所示的新数据框:
A B
0 1 2.7
1 2 4
2 3 4.3
我通过循环来做到这一点:
df2 = pdDataFrame(columns = ['A','B'])
uni = df.A.unique()
for x in uni:
av = df.loc[(df['A'] == x, 'B')].mean()
df2 = df2.append(pd.DataFrame([[x, av]], columns = ['A', 'B']))
我知道循环遍历 DataFrame 不是一种好的形式,而且这个过程需要很长时间。它还导致了一个没有索引的 DataFrame(它们都是 0)。什么是更合适和更有效的方法来做到这一点。提前谢谢!
【问题讨论】: