计算一列中字符串在另一列中的出现次数
Count occurrences of a string from one column in another
我有一个看起来像这样的 df:
Policy Letter Password Lower Upper
0 4-5 l rllllj 4 5
1 4-10 s ssskssphrlpscsxrfsr 4 10
2 14-18 p ppppppppppppppppppp 14 18
3 1-6 z zzlzvmqbzzclrz 1 6
4 4-5 j jhjjhxhjkxj 4 5
我想统计'Letter'栏中的字母在密码中出现了多少次
从每一行的 'Password' 列开始。
换句话说,第一行(4)的密码中有多少个l。
第二行的密码中有多少个 s (8)。
以此类推
如果我这样做:
df['Count'] = df['Password'].str.count('s')
它运行正确,但它只计算列中每个密码中的 s。
当我尝试这个时:
df['Count'] = df['Password'].str.count(df['Letter'])
它抛出一个错误:
TypeError: 'Series' objects are mutable, thus they cannot be hashed
我不知道如何(如果可能的话)让 str.count() 为每一行检查不同的值。
您可以在每一行上应用自定义函数(如循环):
df['Count'] = df.apply(lambda x: x['Password'].count(x['Letter']), axis=1)
print(df)
# Output
Policy Letter Password Lower Upper Count
0 4-5 l rllllj 4 5 4
1 4-10 s ssskssphrlpscsxrfsr 4 10 8
2 14-18 p ppppppppppppppppppp 14 18 19
3 1-6 z zzlzvmqbzzclrz 1 6 6
4 4-5 j jhjjhxhjkxj 4 5 5
有领悟:
df['Count'] = [x.Password.count(x.Letter) for x in df.itertuples()]
# df['Count'] = [x[3].count(x[2]) for x in df.itertuples()]
我有一个看起来像这样的 df:
Policy Letter Password Lower Upper
0 4-5 l rllllj 4 5
1 4-10 s ssskssphrlpscsxrfsr 4 10
2 14-18 p ppppppppppppppppppp 14 18
3 1-6 z zzlzvmqbzzclrz 1 6
4 4-5 j jhjjhxhjkxj 4 5
我想统计'Letter'栏中的字母在密码中出现了多少次 从每一行的 'Password' 列开始。
换句话说,第一行(4)的密码中有多少个l。 第二行的密码中有多少个 s (8)。
以此类推
如果我这样做:
df['Count'] = df['Password'].str.count('s')
它运行正确,但它只计算列中每个密码中的 s。
当我尝试这个时:
df['Count'] = df['Password'].str.count(df['Letter'])
它抛出一个错误:
TypeError: 'Series' objects are mutable, thus they cannot be hashed
我不知道如何(如果可能的话)让 str.count() 为每一行检查不同的值。
您可以在每一行上应用自定义函数(如循环):
df['Count'] = df.apply(lambda x: x['Password'].count(x['Letter']), axis=1)
print(df)
# Output
Policy Letter Password Lower Upper Count
0 4-5 l rllllj 4 5 4
1 4-10 s ssskssphrlpscsxrfsr 4 10 8
2 14-18 p ppppppppppppppppppp 14 18 19
3 1-6 z zzlzvmqbzzclrz 1 6 6
4 4-5 j jhjjhxhjkxj 4 5 5
有领悟:
df['Count'] = [x.Password.count(x.Letter) for x in df.itertuples()]
# df['Count'] = [x[3].count(x[2]) for x in df.itertuples()]