只要其他列中的值匹配,就添加列值

时间:2018-01-01 18:21:18

标签: python python-2.7 summarize

只要另一列中的值相同,我该如何添加列值?

e.g。从以下列表中:

Time   Value
10       a
20       b
10       c
10       d
20       f

我想获得以下结果:

Time      Value
10       (a+c+d)
20        (b+f)

4 个答案:

答案 0 :(得分:1)

如果你有一个数据帧,这是一个熊猫解决方案:

import pandas as pd

data ='''\
Time   Value
10       a
20       b
10       c
10       d
20       f'''

df = pd.read_csv(pd.compat.StringIO(data), sep='\s+')

newdf = df.groupby('Time')['Value']\
        .apply(lambda x: '({})'.format('+'.join(x)))\
        .reset_index()

print(newdf)

返回:

   Time    Value
0    10  (a+c+d)
1    20    (b+f)

答案 1 :(得分:0)

from collections import defaultdict

dd = defaultdict(list)
L = [10, 'a', 20, 'b', 10, 'c', 10, 'd', 20, 'f']
x = 0
while x < len(L):
  dd[L[x]].append(L[x+1]);
  x = x+ 2

for key, val in dd.iteritems():
  print key, reduce(lambda a, b: a+b, val)

print dd

答案 2 :(得分:0)

data = {
    'a': 10,
    'b': 20,
    'c': 10,
    'd': 10,
    'f': 20
}

v = {}

for key, value in sorted(data.iteritems()):
    v.setdefault(value, []).append(key)

print v

而且还有以下内容:

{10: ['a', 'c', 'd'], 20: ['b', 'f']}

答案 3 :(得分:0)

您可以使用groupby,然后选择Value元素(这样就不会sum Times),最后apply {{1 }}

sum