python - pandas 对列值应用 lambda 并选择那些设置大小大于 1 的值

标签 python pandas dataframe

我正在尝试选择 df 中的行,在每一行中,列值的设置大小为 > 1;

df = pd.DataFrame({'col': [1, 2, 3],
               'a': [41, 4, 5],
               'b': [3, 13, 6]})

df['concat'] = (df['a'].astype(str) + df['b'].astype(str))

df.groupby('concat')['col'].apply(set).to_dict()

但这仅适用于 set 到每一列 ('col') 值。

python 阻止我

df.groupby('concat')['col'].apply(lambda x: set(x) if len(set(x)) > 1).to_dict()    

最佳答案

这里可以使用 str.len因为 set 是可迭代的:

s = df.groupby('concat')['col'].apply(set)

d = s[s.str.len() > 1].to_dict()
print (d)
{'413': {1, 2}}

关于python - pandas 对列值应用 lambda 并选择那些设置大小大于 1 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49940115/

相关文章:

python - 在 Pandas 数据框中迭代两个连续行的 Pythonic 方法是什么?

python - 数据框 Pandas 中按最大周期分组的问题

python - 计算多列python中的字符串实例

python - 如何避免使用全局变量? (python - Flask-socketio 应用程序)

python - 列表列表中的重复删除

python - 使用savetxt附加到文件

r - 如何将dplyr过滤器应用于数据帧列表?

python - 访问对象数据切片 numpy 数组

python - 使用 for 循环将数据添加到 pandas 数据帧,所有数据具有相同的键数据帧已经包含一些数据

python - 将数据帧分割成 block 并将它们添加到多重索引中