只要另一列中的值相同,我该如何添加列值?
e.g。从以下列表中:
Time Value
10 a
20 b
10 c
10 d
20 f
我想获得以下结果:
Time Value
10 (a+c+d)
20 (b+f)
答案 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)