37,718
社区成员
发帖
与我相关
我的任务
分享
a = np.array([['项目A','薛之谦','费用1',200],
['项目A','薛之谦','费用2',100],
['项目B','薛之谦','费用3',300],
['项目C','张韶涵','费用4',600],
['项目C','张韶涵','费用5',300]])
b = np.array([['项目A',2000,3000],
['项目B',5000,2000],
['项目C',3000,1000]])
# 需求:
# 1、需要从a中取出薛之谦的所有项目:项目A和项目B
# 2、从b中根据"a_project",将b中包含有"a_project"的列的后两列累加,即:2000+3000+5000+2000
# 实现:
# 1、
a_project = np.unique(a[a[:,1] == '薛之谦',:][:,0]) #['项目A' '项目B']
# 2、
In [16]: numpy.in1d(b[:,0], a_project)
Out[16]: array([ True, True, False], dtype=bool)
In [17]: b_project = numpy.in1d(b[:,0], a_project)
In [18]: c = b[b_project]
In [19]: c
Out[19]:
array([['\xe9\xa1\xb9\xe7\x9b\xaeA', '2000', '3000'],
['\xe9\xa1\xb9\xe7\x9b\xaeB', '5000', '2000']],
dtype='|S7')
In [24]: c[:, 1:3].astype(numpy.int)
Out[24]:
array([[2000, 3000],
[5000, 2000]])
In [25]: c[:, 1:3].astype(numpy.int).sum(axis=1)
Out[25]: array([5000, 7000])
>>> df=pd.DataFrame({"项目":("项目A","项目B","项目C"),
"金额1":(2000,5000,3000),
"金额2":(3000,2000,1000)})
>>> df
金额1 金额2 项目
0 2000 3000 项目A
1 5000 2000 项目B
2 3000 1000 项目C
>>> df["金额1"][(df.项目=="项目A")|(df.项目=="项目B")].sum()
7000
>>> df["金额2"][(df.项目=="项目A")|(df.项目=="项目B")].sum()
5000