python-3.x - 在熊猫数据框中检测星期六并修改行中的值
问题描述
我在下面的python中有熊猫数据框。
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
我想根据 column 检测哪一行落在星期六Date_YMD
。找出volume
这个星期六的值并用两倍的值替换它。对于上表,它应该14224
属于带有 的行Date_YMD 20200926
。
最终的数据框应该是这样的;
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 28448.0
我正在使用python 3.8。
解决方案
将列转换为日期时间,然后通过选择与Series.dt.dayofweek
和比较的多个值DataFrame.loc
:
df['Date_YMD'] = pd.to_datetime(df['Date_YMD'], format='%Y%m%d')
df.loc[df['Date_YMD'].dt.dayofweek.eq(5), 'volume'] *= 2
print (df)
full_name serial Date_YMD prc1 prc2 volume
0 bottle_a AX80 2020-09-22 12874.5 12927.75 61023.0
1 bottle_a AX80 2020-09-23 12878.5 12926.75 61023.0
2 bottle_a AX80 2020-09-24 12872.5 12928.75 61023.0
3 bottle_a AX80 2020-09-25 12885.5 12984.25 62295.0
4 bottle_a AX80 2020-09-26 12880.0 13000.00 28448.0
推荐阅读
- python - 前端(在 Angular 中)可以处理多个后端吗?
- java - Java合并2个集合,同时根据特定字段比较和保留对象
- flutter - 什么是 Dart Flutter 中的零参数构造函数
- c# - 滚动查看所有记录 ElasticSearch C# Nest
- pdf - 使用 Apache Poi 库在 android 中将 docx 或 doc 转换为 PDF
- python - 如何使用python中的for循环从数据框中返回每列的最大值
- javascript - 使用 npm config 在 NodeJS 中配置文件
- hive - 在 Hive 中,有没有办法在 Y 列之前添加 X 列
- android - 为什么我录制的视频在使用改造上传到服务器后变成 0 字节?
- react-native - react-native 中的 ckeditor 实现