熊猫:计算一列中每个值出现在另一列中的次数

时间:2020-06-19 14:41:27

标签: python pandas

我要计算“父”列中“子”列中的值出现的次数,然后在重新命名为“子”计数的新列中显示此计数。请参见下面的预览df。

我已经通过VBA(COUNTIFS)完成此操作,但是现在需要动态可视化和动画显示,并从目录中获取数据。因此,我求助于Python和Pandas,并在搜索并阅读以下答案后尝试使用以下代码:Countif in pandas with multiple conditions | Determine if value is in pandas column | Iterate over rows in Pandas df |很多其他的... 但仍然无法获得预期的预览,如下图所示。

任何帮助将不胜感激。预先感谢。

color

预览数据框

enter image description here

预览输出

enter image description here

预期输出

enter image description here

[已编辑]我的数据

Child = ['Tkt01','Tkt02','Tkt03','Tkt04','Tkt05','Tkt06','Tkt07','Tkt08','Tkt09','Tkt10']

父母= ['','','Tkt03','',','Tkt03',','Tkt03',',',','Tkt06',',',',' ',]

Site_Name = [Yaounde','Douala','Bamenda','Bafoussam','Kumba','Garoua','Maroua','Ngaoundere','Buea','Ebolowa']

2 个答案:

答案 0 :(得分:2)

我为您的df创建了相似的外观。

之前

enter image description here

尝试此代码

df['Count'] = [len(df[df['parent'].str.contains(value)]) for index, value in enumerate(df['child'])]
#breaking it down as a line by line code

counts = []
for index, value in enumerate(df['child']):
    found = df[df['parent'].str.contains(value)]
    counts.append(len(found))
df['Count'] = counts

之后

enter image description here

希望这对您有用。

答案 1 :(得分:0)

由于我无权访问您的数据,因此无法检查我提供给您的代码。我建议您在此行中使用nan值时会遇到问题,但是可以尝试一下。

df_ns['child_count'] = df_ns['Parent'].groupby(df_ns['Child']).value_counts()

我给新列起一个名字,并通过groupby-> value_counts函数直接为其赋值。