gpt4 book ai didi

python-3.x - Pandas Dataframe 显示具有所需条件的行

转载 作者:行者123 更新时间:2023-12-02 02:42:23 26 4
gpt4 key购买 nike

我目前正在通过 python 处理我的定量代码。我最近一直在使用数据帧,直到昨天,一个可怕的故障对我造成了很大的打击,我很迷失如何获得我想要的结果:

这是 DOM:

   ts_code    end_date   fcff          roe_yearly  roa_dp  roic_yearly  roe_yoy   q_op_qoq 
0 603000.SH 20191231 1.041476e+08 10.8941 7.6454 12.6005 47.5085 356.2437
1 603000.SH 20190930 -1.431920e+08 4.2044 2.2306 4.8479 31.2632 -25.7032
2 603000.SH 20190630 -2.267375e+08 2.9238 1.0385 3.5750 276.4166 449.9221
3 603000.SH 20190331 -3.097644e+08 -3.1372 -0.5800 -3.7248 62.9496 -116.0415
4 603000.SH 20181231 1.775266e+08 7.4066 5.4977 8.3623 122.7574 71.7184
5 603000.SH 20180930 3.023451e+07 3.2345 1.8423 3.8565 307.8660 98.3655
6 603000.SH 20180630 -1.042179e+08 -1.6766 -0.6451 -1.1682 19.8322 186.0172
7 603000.SH 20180331 -2.138164e+08 -8.4060 -1.6109 -8.4708 -27.0477 -167.3619
8 603000.SH 20171231 3.593505e+08 3.2401 2.4328 3.4555 -17.1973 76.1037
9 603000.SH 20170930 -2.170032e+07 0.7884 0.4471 1.0209 -78.5932 49.9168
10 603000.SH 20170630 2.299095e+07 -2.0970 -0.7922 -1.9708 -188.7621 156.7807
11 603000.SH 20170331 -6.089507e+07 -6.6504 -1.2439 -7.7056 -217.9714 -485.1622
12 603000.SH 20161231 -8.746122e+08 3.9054 2.9030 6.4299 -61.9080 -69.2861
13 603000.SH 20160930 -8.630607e+08 3.7055 2.1016 6.8464 -51.4469 2306.0770
14 603000.SH 20160630 -2.855617e+08 2.3550 0.8761 7.2218 -49.3369 -101.6762
15 603000.SH 20160331 -3.922060e+08 5.7132 1.0855 14.7152 103.8043 -2.5653
16 603000.SH 20151231 -1.632709e+08 10.4885 7.7055 12.7376 -21.8468 14.4998

我想要过滤掉的是年度报告,它只显示 df['end_date'] 匹配以 1231 日期结尾的行。谁能给我一个方向来解决这个问题?非常感谢!

最佳答案

第一个想法是将值转换为字符串并通过索引选择值 - 前 4 个数字之后的值,按 1234 字符串进行比较并按 boolean indexing 进行过滤:

df1 = df[df['end_date'].astype(str).str[4:].eq('1231')]
print (df1)
ts_code end_date fcff roe_yearly roa_dp roic_yearly \
0 603000.SH 20191231 104147600.0 10.8941 7.6454 12.6005
4 603000.SH 20181231 177526600.0 7.4066 5.4977 8.3623
8 603000.SH 20171231 359350500.0 3.2401 2.4328 3.4555
12 603000.SH 20161231 -874612200.0 3.9054 2.9030 6.4299
16 603000.SH 20151231 -163270900.0 10.4885 7.7055 12.7376

roe_yoy q_op_qoq
0 47.5085 356.2437
4 122.7574 71.7184
8 -17.1973 76.1037
12 -61.9080 -69.2861
16 -21.8468 14.4998

使用日期时间的解决方案 - 首先转换,然后通过 Series.dt.strftime 获取月份和天数:

df1 = df[pd.to_datetime(df['end_date'], format='%Y%m%d').dt.strftime('%m%d').eq('1231')]

关于python-3.x - Pandas Dataframe 显示具有所需条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63353674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com