python - 如何遍历 pandas 组并检查每个组中是否有字符串?

标签 python python-2.7 pandas

我有一个 pandas 数据框,其中包含特定日期的大量记录。我需要按日期对它们进行分组,并检查第二天是否有前一天的记录,特别是我需要输出删除了哪些记录。

这是一个示例数据集:

Date        Item
20160101    apple
20160101    pear
20160101    banana
20160102    apple
20160102    pear
20160102    beans

我需要弄清楚每个日期出现的差异,因此对于 2016 年 1 月 2 日的这个示例,添加了一个字符串“beans”,并从组中删除了一个“banana”。

到目前为止,我的代码是:

groups = frame['Item'].groupby(frame['Date'])

for date, item in groups:
    for i in item:
        if i not in item[:-1]:
            print date, item, 'Deleted'

这似乎不起作用。我应该期待:

20160102 , banana, Deleted

感谢您的帮助!

最佳答案

diffs = frame.groupby(frame.columns.tolist()).size().unstack(fill_value=0).diff()
diffs

enter image description here

diffs.mask(diffs.eq(0)).stack().map({-1: 'deleted', 1: 'added'})

Date      Item  
20160102  banana    deleted
          beans       added
dtype: object

关于python - 如何遍历 pandas 组并检查每个组中是否有字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40228998/

相关文章:

python - 为什么 groupby sum 不将 boolean 转换为 int 或 float?

python - 根据另一个列表中的值对列表进行排序并从排序中排除列表中的元素?

Python 排序 - 对象列表

Python:减少字典中的列表

python - 在 python 中导入模块在解释器和脚本文件中给出两个不同的输出

python - 打开路径中有空格的文件

python - Pandas : drop_duplicates().fillna(0) 不填充零

python - 选择一列的一些元素并找到它们的最大值,在一个大文件上重复。使用 python

python - 使用 PIL/Image 保存 .tif 堆栈

python - 带有(非 unicode)字符串的 PyUnicode_FromFormat