将一列中的第 n 个字母与另一列中的单个字母进行比较
Compare nth letter in one column to a single letter in another
我有一个df如下:
Policy Letter Password Lower Upper Count Lower_Minus_1 Upper_Minus_1
0 4-5 l rllllj 4 5 4 3 4
1 4-10 s ssskssphrlpscsxrfsr 4 10 8 3 9
2 14-18 p ppppppppppppppppppp 14 18 19 13 17
3 1-6 z zzlzvmqbzzclrz 1 6 6 0 5
4 4-5 j jhjjhxhjkxj 4 5 5 3 4
Lower_Minus_1 值将用作索引来搜索密码中的该位置,以查看它是否与列 'Letter'.
中的字母匹配
这一行有效:
print(df['Password'].str[3] == df['Letter'])
然而,它严格地returnsTrue\False基于每行'Password'中的值的第三个位置。
前五名:
0 True
1 False
2 True
3 True
4 True
我不想要每一行的第三个位置。我想要每一行的 Lower_Minus_1 位置。
我尝试了以下但都失败了:
print(df['Password'].str[df['Letter']] == df['Letter'])
Returns 每一行都是假的,如下所示:
print((df['Password'].str[df['Letter']] == df['Letter']).sum())
Returns: 0
然后我试了这个:
print(df.apply(lambda x: x['Password'].str[x['Lower_Minus_1']], axis=1) == df['Letter'])
这会引发错误:
File "D:/AofC/2020_day2.py", line 56, in <lambda>
print(df.apply(lambda x: x['Password'].str[x['Lower_Minus_1']], axis=1) == df['Letter'])
AttributeError: 'str' object has no attribute 'str'
df.apply(lambda x:x['Letter']== x['Password'][x.Lower_Minus_1], axis=1)
0 True
1 False
2 True
3 True
4 True
dtype: bool
我有一个df如下:
Policy Letter Password Lower Upper Count Lower_Minus_1 Upper_Minus_1
0 4-5 l rllllj 4 5 4 3 4
1 4-10 s ssskssphrlpscsxrfsr 4 10 8 3 9
2 14-18 p ppppppppppppppppppp 14 18 19 13 17
3 1-6 z zzlzvmqbzzclrz 1 6 6 0 5
4 4-5 j jhjjhxhjkxj 4 5 5 3 4
Lower_Minus_1 值将用作索引来搜索密码中的该位置,以查看它是否与列 'Letter'.
中的字母匹配这一行有效:
print(df['Password'].str[3] == df['Letter'])
然而,它严格地returnsTrue\False基于每行'Password'中的值的第三个位置。
前五名:
0 True
1 False
2 True
3 True
4 True
我不想要每一行的第三个位置。我想要每一行的 Lower_Minus_1 位置。
我尝试了以下但都失败了:
print(df['Password'].str[df['Letter']] == df['Letter'])
Returns 每一行都是假的,如下所示:
print((df['Password'].str[df['Letter']] == df['Letter']).sum())
Returns: 0
然后我试了这个:
print(df.apply(lambda x: x['Password'].str[x['Lower_Minus_1']], axis=1) == df['Letter'])
这会引发错误:
File "D:/AofC/2020_day2.py", line 56, in <lambda>
print(df.apply(lambda x: x['Password'].str[x['Lower_Minus_1']], axis=1) == df['Letter'])
AttributeError: 'str' object has no attribute 'str'
df.apply(lambda x:x['Letter']== x['Password'][x.Lower_Minus_1], axis=1)
0 True
1 False
2 True
3 True
4 True
dtype: bool