我有一个包含三列的DataFrame x;
a b c
1 1 10 4
2 5 6 5
3 4 6 5
4 2 11 9
5 1 2 10
......和两个值的系列y;
t
1 3
2 7
现在我想获得一个包含两列的DataFrame z;
t sum_c
1 3 18
2 7 13
...来自y和sum_c的t是来自x的所有行的c之和,其中t大于a且小于b。
有人能帮我这个吗?
答案 0 :(得分:0)
这是一个基于给定条件的可能解决方案(在你的问题中列出的预期结果与给定条件完全一致):
In[99]: df1
Out[99]:
a b c
0 1 10 4
1 5 6 5
2 4 6 5
3 2 11 9
4 1 2 10
In[100]: df2
Out[100]:
t
0 3
1 5
然后编写一个稍后将由pandas.apply()使用的函数:
In[101]: def cond_sum(x):
return sum(df1['c'].ix[np.logical_and(df1['a']<x.ix[0],df1['b']>x.ix[0])])
最后:
In[102]: df3 = df2.apply(cond_sum,axis=1)
In[103]: df3
Out[103]:
0 13
1 18
dtype: int64