2
說我有兩個矩陣,原始和參考值的熊貓數據幀的一列:值添加到基於另一個
import pandas as pa
print "Original Data Frame"
# Create a dataframe
oldcols = {'col1':['a','a','b','b'], 'col2':['c','d','c','d'], 'col3':[1,2,3,4]}
a = pa.DataFrame(oldcols)
print "Original Table:"
print a
print "Reference Table:"
b = pa.DataFrame({'col1':['x','x'], 'col2':['c','d'], 'col3':[10,20]})
print b
凡表是這樣的:
Original Data Frame
Original Table:
col1 col2 col3
0 a c 1
1 a d 2
2 b c 3
3 b d 4
Reference Table:
col1 col2 col3
0 x c 10
1 x d 20
現在我想從原始表(a)的第三列(col3)中減去兩個表中第二列匹配的行中參考表(c)中的值。因此,表2的第一行應該將值10添加到第三列,因爲列col2爲'c'的表b的行在col3中具有值10。合理?下面是一些代碼,做的是:
col3 = []
for ix, row in a.iterrows():
col3 += [row[2] + b[b['col2'] == row[1]]['col3']]
a['col3'] = col3
print "Output Table:"
print a
得到以下的輸出:
Output Table:
col1 col2 col3
0 a c [11]
1 a d [22]
2 b c [13]
3 b d [24]
我的問題是,是否有一個更優雅的方式來做到這一點?此外,'col3'中的結果不應該是列表。使用numpy的解決方案也受到歡迎。
是啊,那是相當多正是我試圖做的! –