如何根据特定列从pandas数据框中选择相同的行

时间:2017-11-01 13:47:56

标签: python pandas dataframe

我是pandas的新手,我遇到了来自数据帧的行选择问题。

以下是我的DataFrame:

   Index    Column1 Column2 Column3 Column4
   0    1234    500 NEWYORK NY
   1    5678    700 AUSTIN  TX
   2    1234    300 NEWYORK NY
   3    8910    235 RICHMOND    FL

我想选择在column1,column 3和column4中具有相同值的行(这3列中的相同行)。因此输出数据帧将包含索引为0和2的行。

任何人都可以帮助我完成此自定义选择的分步过程。

2 个答案:

答案 0 :(得分:3)

使用df.duplicated作为映射器来索引df

c = ['Column1', 'Column3', 'Column4']
df = df[df[c].duplicated(keep=False)]

df

   Index  Column1  Column2  Column3 Column4
0      0     1234      500  NEWYORK      NY
2      2     1234      300  NEWYORK      NY

keep=False会标记所有重复的行以进行过滤。

答案 1 :(得分:0)

厄勒我正在使用以下方法:

d = df.T.to_dict()   

dup=[]
for i in d.keys():
    for j in d.keys():
        if i!=j:
            if d[i]['column1']==agg_d[j]['column1'] and d[i]['column3']==d[j]['column3'] and d[i]['column3']==d[j]['column3']:
                set(dup.append(k[i]['column1'])

dup_rows = df[df.loc['column1'].isin(dup)]