[英]Select only rows that have a value in a data range - pandas dataframe
我拥有的:
date percentage
0 2022-04-08 20.0
1 2022-04-09 0.0
2 2022-04-10 0.0
3 2022-04-11 0.0
4 2022-04-12 10.0
5 2022-04-13 0.0
6 2022-04-14 0.0
date percentage
0 2022-04-08 0.0
1 2022-04-09 0.0
2 2022-04-10 0.0
3 2022-04-11 0.0
4 2022-04-12 0.0
5 2022-04-13 0.0
6 2022-04-14 0.0
date percentage
0 2022-04-08 100.0
1 2022-04-09 0.0
2 2022-04-10 0.0
3 2022-04-11 0.0
4 2022-04-12 0.0
5 2022-04-13 0.0
6 2022-04-14 0.0
date percentage
0 2022-04-08 0.0
1 2022-04-09 0.0
2 2022-04-10 0.0
3 2022-04-11 0.0
4 2022-04-12 18.0
5 2022-04-13 0.0
6 2022-04-14 0.0
date percentage
0 2022-04-08 70.0
1 2022-04-09 0.0
2 2022-04-10 0.0
3 2022-04-11 0.0
4 2022-04-12 77.0
5 2022-04-13 0.0
6 2022-04-14 0.0
我期望的是:
date percentage
0 2022-04-08 20.0
1 2022-04-12 10.0
date percentage
0 2022-04-08 100.0
date percentage
0 2022-04-12 18.0
date percentage
0 2022-04-08 70.0
1 2022-04-12 77.0
我只想 select 那些日子里有值的行。 删除值为 0 的行
我使用 for 循环遍历所有元素到 go,然后我将它们放入列表中 append。
尝试这个:
df[df['percentage'] > 0]
似乎需要在列表理解中过滤行:
L = [df[df['percentage'].ne(0)] for df in dfs]
要获得非零值,您可以简单地执行df = df[df["percentage"] != 0]
。 如果您的日期列是日期时间数据类型,您可以使用df = df[df["date"].dt.day.isin([8, 12])]
按天过滤。 如果没有,又不想转换,就需要用到字符串切片,比较麻烦。
split_date = df["date"].str.split("-", expand=True)
df = df[split_date[2].using(["08", "12"])
最后一个命令中的2
只是拆分 function 返回的最后一列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.