繁体   English   中英

Select 只有在数据范围内有值的行 - pandas dataframe

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM