我有一个熊猫数据框,它由三列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
如果我想找出与distance_A的累计距离,则需要我的代码添加5,6,并且还应该考虑最后一列,即distance_d Distance _a,它也需要加9。
因此与a的累计距离将为5 + 6 + 9 = 20
答案 0 :(得分:1)
@Hongpei的回答当然更有效,但是如果您只想要distance_a的总和。您也可以执行以下操作
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']
答案 1 :(得分:0)
有一个简单的解决方法,假设您原来的DataFrame是df,那么您只需要:
pd.concat([df[['A','C']],
df[['B','C']].rename(columns={'B':'A'})],
sort=False).groupby('A').sum()
基本上,我要做的是将df [[''A','C']]和df [['B','C']]组合在一起(同时将第二个df列重命名为['A',' C']),然后再分组
答案 2 :(得分:0)
IIUC,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