Python 熊猫分组和总和
我有一个pandas数据框,它由三列a、B、C组成,我需要根据行值求和 下面是场景Python 熊猫分组和总和,python,pandas,Python,Pandas,我有一个pandas数据框,它由三列a、B、C组成,我需要根据行值求和 下面是场景 A B C Distance_a distance_b 5 Distance_a distance_c 6 distance_b distance_c 7 distance_b distance_d 7 distance_d Distance_a 9 如果我想找出距离Distangia
A B C
Distance_a distance_b 5
Distance_a distance_c 6
distance_b distance_c 7
distance_b distance_d 7
distance_d Distance_a 9
如果我想找出距离Distangia A的累积距离,我需要我的代码加上5、6,也应该考虑最后一列,即DistangsId距离αA,它需要加上9以及
因此,与a的累积距离将为5+6+9=20。有一个简单的解决方法,假设您的原始数据帧是df,那么您只需要:
pd.concat([df['A','C']],
df[['B','C']].重命名(列={'B':'A'})],
sort=False)。groupby('A')。sum()
基本上,我所做的是将df[['A','C']]和df[['B','C']]合并在一起(同时将第二个df列重命名为['A','C']),然后groupby@Hongpei的答案当然更有效,但如果你只想得到距离的和。您也可以执行以下操作
import pandas as pd
# initialize list of lists
data = {'A':['distance_a', 'distance_a', 'distance_b', 'distance_b', 'distance_d'],
'B':['distance_b', 'distance_c', 'distance_c', 'distance_d', 'distance_a'],
'C':[5, 6, 7, 7, 9]}
# Create the pandas DataFrame
df = pd.DataFrame(data)
# Group by columns A and B individually
col_A_groupby = df.groupby(['A']).sum()
col_B_groupby = df.groupby(['B']).sum()
# Sum the values together
dist_a_sum = col_A_groupby.loc['distance_a'] + col_B_groupby.loc['distance_a']
IIUC,a
melt
和sum
就足够了
s = df.melt('C').groupby('value').C.sum()
print(s)
Out[113]:
value
Distance_a 20
distance_b 19
distance_c 13
distance_d 16
Name: C, dtype: int64
如果您可以首先提供包含数据的原始数据帧代码,这将非常有用。您希望输出什么?