根据Python Pandas中另一个数据框中的数据选择一个数据框中的行

时间:2014-06-10 13:59:05

标签: python pandas

我有两个用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 

然后填充第三个数据框(替代转换第一个数据框),这样我得到的第一个数据版本只保留了当Item1低于定义的'age'时发生的共现行。

1 个答案:

答案 0 :(得分:0)

你可以merge DataFrames - 它类似于SQL中的join

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 ]

   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