假设我有两个矩阵,一个是原始矩阵,一个是参考矩阵:
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添加到第三列,因为表b中列为col2的行是'c',而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的解决方案。
我不太理解您对所做工作的描述,但是您所显示的输出可以通过首先合并两个数据帧,然后进行一些简单的操作来生成
如果
col2
中b
的值不是唯一的,那么您可能还需要以下内容:相关问题 更多 >
编程相关推荐