使用drop()从panda dataframe中删除星期六行的正确方法

2024-07-08 10:51:25 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是python中的panda数据帧

full_name  serial  Date_YMD        prc1     prc2    volume
 bottle_a  AX80    20200922    12874.50  12927.75   61023.0 
 bottle_a  AX80    20200923    12878.50  12926.75   61023.0
 bottle_a  AX80    20200924    12872.50  12928.75   61023.0
 bottle_a  AX80    20200925    12885.50  12984.25   62295.0
 bottle_a  AX80    20200926    12880.00  13000.00   14224.0

我想删除Date_YMD包含星期六的所有行

最终的数据帧如下所示

 full_name  serial  Date_YMD        prc1     prc2    volume
 bottle_a  AX80    20200922    12874.50  12927.75   61023.0 
 bottle_a  AX80    20200923    12878.50  12926.75   61023.0
 bottle_a  AX80    20200924    12872.50  12928.75   61023.0
 bottle_a  AX80    20200925    12885.50  12984.25   62295.0

要知道一排是否是星期六,下面是代码

df['Date_YMD'] = pd.to_datetime(df['Date_YMD'], format='%Y%m%d')
df['Date_YMD'].dt.dayofweek.eq(5)

要删除一行,我相信drop()函数是正确的使用方法。如果有更好的选择,请告知

问题是如何在找到星期六行之后应用drop()。除了使用drop()之外,我还愿意使用其他方法,只要它能解决问题

我正在使用python 3.8


Tags: 数据方法namebottledfdateserialpanda
1条回答
网友
1楼 · 发布于 2024-07-08 10:51:25

你在正确的轨道上。只需使用strftime提取day of the week并过滤掉非星期六

 df= df[~pd.to_datetime(df['Date_YMD'], format='%Y%m%d').dt.strftime("%A").isin(['Saturday'])]

或者将天数转换为数字,并删除任何不等于6的天数

df=df[pd.to_datetime(df['Date_YMD'], format='%Y%m%d').dt.strftime("%w")!='6']

full_name serial  Date_YMD     prc1      prc2   volume
0  bottle_a   AX80  20200922  12874.5  12927.75  61023.0
1  bottle_a   AX80  20200923  12878.5  12926.75  61023.0
2  bottle_a   AX80  20200924  12872.5  12928.75  61023.0
3  bottle_a   AX80  20200925  12885.5  12984.25  62295.0

相关问题 更多 >

    热门问题