python - 在新列中计算数据框中的逗号分隔字符串

我有以下 df:

df = pd.DataFrame({'Name': ['John', 'Sara', 'Paul', 'Guest'], 'Interaction': ['share,like,share,like,like,like', 'love,like,share,like,love,like', 'share,like,share,like,like,like,share,like,share,like,like,hug','share,like,care,like,like,like']})

Name    Interaction
0   John    share,like,share,like,like,like
1   Sara    love,like,share,like,love,like
2   Paul    share,like,share,like,like,like,share,like,sha...
3   Guest   share,like,care,like,like,like

我想创建第三列,将单次交互的数量计算为 int

我做了什么:

df['likes'] = df[df['Interaction'] == 'like'].groupby('Name')['Interaction'].transform(lambda x: x[x.str.contains('like')].count())

我在分享、关怀等方面做了同样的事情 但它不起作用!

Name    Interaction                                           likes     shares
0   John    share,like,share,like,like,like                     NaN     NaN
1   Sara    love,like,share,like,love,like                      NaN     NaN
2   Paul    share,like,share,like,like,like,share,like,sha...   NaN     NaN
3   Guest   share,like,care,like,like,like                      NaN     NaN

如何将每次交互计数为 int,然后在最后一列中找到每行的总数?

最佳答案

首先你需要str.split逗号上的列,展开结果创建一个dataframe,stack得到一个系列并使用str。 get_dummies 将为每个不同的单词创建一列,并为系列中的相应值加 1。最后在 level=0 上 sum 回到原来的形状。 join 结果到原始数据框

df = df.join( df['Interaction'].str.split(',', expand=True)
                .stack()
                .str.get_dummies()
                .sum(level=0)
            )
print(df)
    Name                                        Interaction  care  hug  like  \
0   John                    share,like,share,like,like,like     0    0     4   
1   Sara                     love,like,share,like,love,like     0    0     3   
2   Paul  share,like,share,like,like,like,share,like,sha...     0    1     7   
3  Guest                     share,like,care,like,like,like     1    0     4   

   love  share  
0     0      2  
1     2      1  
2     0      4  
3     0      1  

https://stackoverflow.com/questions/67613400/

相关文章:

pandas - 如何通过每行的第一个单词将 pandas 中的行汇总为该第一个单词的聚合?

Pandas - 提取第 4 个字符后的所有文本

c# - 在不使用 lambda 表达式的情况下从该方法传递额外参数时在方法内部订阅事件

python - 如何从 yfinance 数据中删除时区?

c++ - 为什么 C++ 中 std::string 的复制方法在此程序中显示出奇怪的行为?

kubernetes - Helm : How to avoid recreating secret

java - 如何断言数组中某个值的存在

python - 无需替换即可生成置换数组

typescript - 没有泛型的类型推断?

android - Jetpack 撰写 : Textfield and FAB not using