我获得了一个数据文件,希望循环遍历列c2中的所有单元格,并计算每个字符串在另一列c1中出现的次数(如果存在的话)。然后打印结果。
示例df:
id c1 c2
0 luke skywalker han solo
1 leia organa r2d2
2 darth vader finn
3 han solo the emporer
4 han solo c3po
5 finn leia organa
6 r2d2 darth vader示例打印结果:
han solo 2
r2d2 1
finn 1
the emporer 0
c3po 0
leia organa 1
darth vader 1我用朱庇特笔记本和巨蟒和熊猫。谢谢!
发布于 2018-02-15 23:35:21
你可以使用一些Numpy魔法。
使用count和广播比较每种组合。
from numpy.core.defchararray import count
c1 = df.c1.values.astype(str)
c2 = df.c2.values.astype(str)
pd.Series(
count(c1, c2[:, None]).sum(1),
c2
)
han solo 2
r2d2 1
finn 1
the emporer 0
c3po 0
leia organa 1
darth vader 1
dtype: int64发布于 2018-02-15 23:34:43
您可以将它们作为category传递,并使用value_counts
df.c1.astype('category',categories=df.c2.tolist()).value_counts(sort=False)
Out[572]:
han solo 2
r2d2 1
finn 1
the emporer 0
c3po 0
leia organa 1
darth vader 1
Name: c1, dtype: int64或者你可以
pd.crosstab(df.c2,df.c1).sum().reindex(df.c2,fill_value=0)
Out[592]:
c2
han solo 2
r2d2 1
finn 1
the emporer 0
c3po 0
leia organa 1
darth vader 1发布于 2018-02-15 23:53:23
df[c3] = pd.Series([df[c1].count(n) for n in df[c2]])https://stackoverflow.com/questions/48817935
复制相似问题