在Python中,如何计算数据帧中字符串的出现次数?
我试图计算数据帧列中的船只数量。在这种情况下,我试图计算77小时的数量。我可以对单个元素执行此操作,但对整个专栏的操作似乎不起作用 例如,这适用于我的数据框中的单个元素在Python中,如何计算数据帧中字符串的出现次数?,python,dataframe,Python,Dataframe,我试图计算数据帧列中的船只数量。在这种情况下,我试图计算77小时的数量。我可以对单个元素执行此操作,但对整个专栏的操作似乎不起作用 例如,这适用于我的数据框中的单个元素 df = pd.DataFrame({'Route':['Callais','Dover','Portsmouth'],'shipCode':[['77H','77G'],['77G'],['77H','77H']]}) df['shipCode'][2].count('77H') 但是当我尝试在每一行上使用 df['ship
df = pd.DataFrame({'Route':['Callais','Dover','Portsmouth'],'shipCode':[['77H','77G'],['77G'],['77H','77H']]})
df['shipCode'][2].count('77H')
但是当我尝试在每一行上使用
df['shipCode'].count('77H')
df['shipCode'].str.count('77H')
这两次尝试都失败了,如果您能提供有关如何编写此代码的任何帮助,我们将不胜感激
谢谢如果你做了这样的事怎么办 假设你最初的字典
import pandas as pd
from collections import Counter
df = pd.DataFrame(df) #where df is the dictionary defined in OP
您可以为每行列表中的所有元素生成一个计数器,如下所示:
df['counts'] = df['shipCode'].apply(lambda x: Counter(x))
df['counts'] = df['shipCode'].apply(lambda x: Counter(x)['77H'])
输出:
Route shipCode counts
0 Callais [77H, 77G] {'77H': 1, '77G': 1}
1 Dover [77G] {'77G': 1}
2 Portsmouth [77H, 77H] {'77H': 2}
Route shipCode counts
0 Callais [77H, 77G] 1
1 Dover [77G] 0
2 Portsmouth [77H, 77H] 2
[1, 0, 2]
或者,如果您特别想要一个,即'77H'
,您可以这样做:
df['counts'] = df['shipCode'].apply(lambda x: Counter(x))
df['counts'] = df['shipCode'].apply(lambda x: Counter(x)['77H'])
输出:
Route shipCode counts
0 Callais [77H, 77G] {'77H': 1, '77G': 1}
1 Dover [77G] {'77G': 1}
2 Portsmouth [77H, 77H] {'77H': 2}
Route shipCode counts
0 Callais [77H, 77G] 1
1 Dover [77G] 0
2 Portsmouth [77H, 77H] 2
[1, 0, 2]
甚至可以使用第一种方法(每行的完整计数器):
输出:
Route shipCode counts
0 Callais [77H, 77G] {'77H': 1, '77G': 1}
1 Dover [77G] {'77G': 1}
2 Portsmouth [77H, 77H] {'77H': 2}
Route shipCode counts
0 Callais [77H, 77G] 1
1 Dover [77G] 0
2 Portsmouth [77H, 77H] 2
[1, 0, 2]
如果你做了这样的事怎么办
假设你最初的字典
import pandas as pd
from collections import Counter
df = pd.DataFrame(df) #where df is the dictionary defined in OP
您可以为每行列表中的所有元素生成一个计数器,如下所示:
df['counts'] = df['shipCode'].apply(lambda x: Counter(x))
df['counts'] = df['shipCode'].apply(lambda x: Counter(x)['77H'])
输出:
Route shipCode counts
0 Callais [77H, 77G] {'77H': 1, '77G': 1}
1 Dover [77G] {'77G': 1}
2 Portsmouth [77H, 77H] {'77H': 2}
Route shipCode counts
0 Callais [77H, 77G] 1
1 Dover [77G] 0
2 Portsmouth [77H, 77H] 2
[1, 0, 2]
或者,如果您特别想要一个,即'77H'
,您可以这样做:
df['counts'] = df['shipCode'].apply(lambda x: Counter(x))
df['counts'] = df['shipCode'].apply(lambda x: Counter(x)['77H'])
输出:
Route shipCode counts
0 Callais [77H, 77G] {'77H': 1, '77G': 1}
1 Dover [77G] {'77G': 1}
2 Portsmouth [77H, 77H] {'77H': 2}
Route shipCode counts
0 Callais [77H, 77G] 1
1 Dover [77G] 0
2 Portsmouth [77H, 77H] 2
[1, 0, 2]
甚至可以使用第一种方法(每行的完整计数器):
输出:
Route shipCode counts
0 Callais [77H, 77G] {'77H': 1, '77G': 1}
1 Dover [77G] {'77G': 1}
2 Portsmouth [77H, 77H] {'77H': 2}
Route shipCode counts
0 Callais [77H, 77G] 1
1 Dover [77G] 0
2 Portsmouth [77H, 77H] 2
[1, 0, 2]
数据框有一个shipcode列,其中包含一个值列表
首先显示True或False值,以标识shipcode列中包含字符串“77H”的行
> df['shipcode'].map(lambda val: val.count('77H')>0)
现在,根据上一步中获得的真/假值过滤数据帧
> df[df['shipcode'].map(lambda val: val.count('77H')>0)]
最后,使用pythonlen
方法获取数据帧中所有值的计数,其中shipcode列表包含与“77H”匹配的值
> len(df[df['shipcode'].map(lambda val: val.count('77H')>0)])
另一种容易记住分析内容的方法是在同一数据帧中创建一列来存储真/假值。然后根据真/假值进行过滤。实际上和上面一样,但在我看来更漂亮一点
> df['filter_column'] = df['shipcode'].map(lambda val: val.count('77H')>0)
> len(df[df['filter_column']])
祝你好运,享受使用Python和Pandas处理数据的乐趣 数据框有一个shipcode列,其中包含一个值列表
首先显示True或False值,以标识shipcode列中包含字符串“77H”的行
> df['shipcode'].map(lambda val: val.count('77H')>0)
现在,根据上一步中获得的真/假值过滤数据帧
> df[df['shipcode'].map(lambda val: val.count('77H')>0)]
最后,使用pythonlen
方法获取数据帧中所有值的计数,其中shipcode列表包含与“77H”匹配的值
> len(df[df['shipcode'].map(lambda val: val.count('77H')>0)])
另一种容易记住分析内容的方法是在同一数据帧中创建一列来存储真/假值。然后根据真/假值进行过滤。实际上和上面一样,但在我看来更漂亮一点
> df['filter_column'] = df['shipcode'].map(lambda val: val.count('77H')>0)
> len(df[df['filter_column']])
祝你好运,享受使用Python和Pandas处理数据的乐趣 用这些值过滤数据帧,并对生成的数据帧df
进行值\u计数。在本例中,isdict
不是dataframe
这是否回答了您的问题?或者如果你真的有一个数据帧;在这种情况下,您不需要。使用这些值过滤数据帧,并对生成的数据帧进行值_计数。在本例中,这是否回答了您的问题?或者如果你真的有一个数据帧;在这种情况下,您不需要。非常感谢!正是我一直在找的汉克斯!正是我想要的哦,天哪!我没有注意到您要求提供事件总数。我以为你在寻找shipcode列中包含77H值的行数。哦,天哪!我没有注意到您要求提供事件总数。我以为您正在查找shipcode列中包含77H值的行数。