我有多张桌子,就像-

表A-

Seller Date sales
Ron 1-Aug 0
Jon 1-Aug 2
Kon 1-Aug 3
Kat 1-Aug 2
Mat 1-Aug 4

表B--

Seller Date sales
Ron 2-Aug 0
Jon 2-Aug 2
Kon 2-Aug 3
Kat 2-Aug 0
Mat 2-Aug 4

表C--

Seller Date sales
Ron 3-Aug 0
Jon 3-Aug 2
Kon 3-Aug 3
Kat 3-Aug 0
Mat 3-Aug 4

表D-

Seller Date sales
Ron 4-Aug 0
Jon 4-Aug 2
Kon 4-Aug 3
Kat 4-Aug 0
Mat 4-Aug 4

我需要找到价值始终为零的卖家名单,比如-

RON-始终为零

另一个发现是-找到最近3个日期价值为零的卖家,例如-

在过go 的3次约会中,凯特都是零.在表A中,日期为1-8月的凯特有一定的价值.

创建一个这样的卖家名单.我在类似类型的表中有许多数据.

Note -个表格没有按日期排序.

推荐答案

首先需要创建DataFrame,将列转换为日期时间并进行排序:

L = [df1, df2, df3, df4]

df=pd.concat([x.set_index('Seller')['sales'].rename(x['Date'].iat[0]) for x in L], axis=1)
df.columns = pd.to_datetime('2023'+df.columns, format='%Y%d-%b')

df = df.sort_index(axis=1)
print (df)
        2023-08-01  2023-08-02  2023-08-03  2023-08-04
Seller                                                
Ron              0           0           0           0
Jon              2           2           2           2
Kon              3           3           3           3
Kat              2           0           0           0
Mat              4           4           4           4

然后测试0个值,如果所有值都匹配,则从索引中获取名称列表:

m = df.eq(0)

out1 = df.index[m.all(axis=1)].tolist()
print (out1)
['Ron']

并且仅用于测试最后3个零值:

N = 3
out2 = df.index[m.iloc[:, -N:].all(axis=1)].difference(out1).tolist()
print (out2)
['Kat']

Python-3.x相关问答推荐

海象表达可以放在方括号中而不是括号中吗?

类型注释:pathlib. Path vs importlib. resources. abc. Traversable

在多个测试中维护和报告变量

Python3和请求-超文本标记语言:试图抓取一个网站-没有取回真正的超文本标记语言代码

具有多个值的极轴旋转和熔化/取消旋转(反转旋转)操作(Pandas 堆叠/取消堆叠交替/UDF覆盖)

Django 3.2/Django-cms 3.11:查找错误:型号帐户.客户用户未注册

regexp多重前瞻行为的解释

在 pytest 中,如何测试 sys.exit('some error message')?

如何对具有多个列值的 pandas 数据框进行数据透视/数据透视表

删除Pandas 数据框行不起作用

使用 selenium 加速网页抓取

如何在数据['column']中的'string'等条件下应用pandas

pip install mysqlclient 失败为 mysqlclient 运行 setup.py bdist_wheel ... 错误

解包时是否可以指定默认值?

Python - 如何从同一台客户端机器运行多个Flask应用程序

python 3.7 websockets的1006连接异常关闭错误

python 3.4版不支持'ur'前缀

如何将 SimpleGUI 与 Python 2.7 和 3.0 shell 集成

用 numpy nan 查找列表的最大值

如何删除目录? os.removedirs 和 os.rmdir 是否只用于删除空目录?