2014-06-10 167 views
0

我有两个使用Pandas创建的数据框。第一个有项目的共同出现在某些年份发生的事情:根据Python中另一个数据框中的数据选择一个数据框中的行Pandas

Date Item1 Item2 
0 1975  a  b 
1 1976  b  c 
2 1977  b  a 
3 1977  a  b 
4 1978  c  d 
5 1979  e  f 
6 1980  a  f 

第二个拥有该项目的生日:

Birthdate Item  
1975  a 
1975  b 
1976  c 
1978  d 
1979  f 
1979  e 

现在,我要设置一个年龄的变量,例如:

age = 2 

然后填充第三个数据帧(替代改造的第一个),使我得到一个版本的第一个保持所发生的时候项目1是低于同现只排定义“年龄”。

回答

0

你可以merge DataFrames - 它是在SQL

import pandas 

data = [ 
    [1975,'a','b'], 
    [1976,'b','c'], 
    [1977,'b','a'], 
    [1977,'a','b'], 
    [1978,'c','d'], 
    [1979,'e','f'], 
    [1980,'a','f'], 
] 

birthdate = [ 
    [1975,'a'], 
    [1975,'b'], 
    [1976,'c'], 
    [1978,'d'], 
    [1979,'f'], 
    [1979,'e'] 
] 

df1 = pandas.DataFrame(data, columns = ['Date', 'Item1', 'Item2']) 
df2 = pandas.DataFrame(birthdate, columns = ['Birthdate', 'Item']) 

#print df1 
#print df2 

newdf = pandas.merge(left=df1, right=df2, left_on='Item1', right_on='Item') 

print newdf 

print newdf[ newdf['Birthdate'] > 1975 ] 

类似join

Date Item1 Item2 Birthdate Item 
0 1975  a  b  1975 a 
1 1977  a  b  1975 a 
2 1980  a  f  1975 a 
3 1976  b  c  1975 b 
4 1977  b  a  1975 b 
5 1978  c  d  1976 c 
6 1979  e  f  1979 e 

    Date Item1 Item2 Birthdate Item 
5 1978  c  d  1976 c 
6 1979  e  f  1979 e 
相关问题