我有一个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
答案 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