如何比较数据框中两个连续的字段是否相同?

时间:2017-04-11 15:21:04

标签: python pandas

我有一个dataframe,其中第一列是:

id = ["6LDFTLL9", "6LDFTLL9", "7SKDEZWE", "7SKDEZWE", "7SKDEZWE", "7SKDEZWE","6VPZ4T5P", "EHYXE34N", "EHYXE34N", "TT56GTN2","TT56GTN2" ]

我想检查连续的id是否相同。我尝试使用以下代码,但它没有用。

i=1
for index, row in df.iterrows():
     df.id.iloc[i] == df.id.iloc[i + 1]:
     i = i+1

3 个答案:

答案 0 :(得分:3)

$(document).ready(function () {
    $("#date").mobiscroll().date({
        theme: 'wp',
        mode: 'clickpick',
        onChange: function (ins) {
            console.log(JSON.stringify(ins));
        },
        dateFormat: 'mm/dd/yyyy'
    });
});

输出:

df = pd.DataFrame({'id':["6LDFTLL9", "6LDFTLL9", "7SKDEZWE", "7SKDEZWE", "7SKDEZWE", "7SKDEZWE","6VPZ4T5P", "EHYXE34N", "EHYXE34N", "TT56GTN2","TT56GTN2" ]})

df['Consec_id'] = df['id'] == df.shift()['id']

print(df)

重复计数:

          id Consec_id
0   6LDFTLL9     False
1   6LDFTLL9      True
2   7SKDEZWE     False
3   7SKDEZWE      True
4   7SKDEZWE      True
5   7SKDEZWE      True
6   6VPZ4T5P     False
7   EHYXE34N     False
8   EHYXE34N      True
9   TT56GTN2     False
10  TT56GTN2      True

输出

df['Consec_id'].sum()

答案 1 :(得分:2)

鉴于此数据框

df = pd.DataFrame({'id':["6LDFTLL9", "6LDFTLL9", "7SKDEZWE", "7SKDEZWE", "7SKDEZWE", "7SKDEZWE","6VPZ4T5P", "EHYXE34N", "EHYXE34N", "TT56GTN2","TT56GTN2" ]})

df[df.id == df.id.shift(1)]

将返回与之前的ID相同的ID。

    id
1   6LDFTLL9
3   7SKDEZWE
4   7SKDEZWE
5   7SKDEZWE
8   EHYXE34N
10  TT56GTN2

如果您正在寻找相同的配对,那么更合适的事情就是

df.loc[(df.id == df.id.shift(1))|(df.id == df.id.shift(-1))]

这将在两组中提供相同的ID,您可以从中进行进一步的计算。

    id
0   6LDFTLL9
1   6LDFTLL9
2   7SKDEZWE
3   7SKDEZWE
4   7SKDEZWE
5   7SKDEZWE
7   EHYXE34N
8   EHYXE34N
9   TT56GTN2
10  TT56GTN2

请注意,在这种情况下,它只删除索引6处的id,因为它上面或下面没有匹配的对。

希望这会有所帮助。

答案 2 :(得分:0)

使用此数据框:

df = pd.DataFrame({'id':["6LDFTLL9", "6LDFTLL9", "7SKDEZWE", "7SKDEZWE", "7SKDEZWE", "7SKDEZWE","6VPZ4T5P", "EHYXE34N", "EHYXE34N", "TT56GTN2","TT56GTN2" ]})

生成新列:

df['id_2'] = df.id.shift(-1)
df.dropna(inplace= True)

现在您可以使用一个简单的过滤器来比较两个连续值是否相同:

df[df['id'] == df[id_2]]

您将获得所需的结果:

        id        id_2
0   6LDFTLL9    6LDFTLL9
2   7SKDEZWE    7SKDEZWE
3   7SKDEZWE    7SKDEZWE
4   7SKDEZWE    7SKDEZWE
7   EHYXE34N    EHYXE34N
9   TT56GTN2    TT56GTN2