我有一个 Pandas 数据框,如下所示:
df =
open high low close
Timestamp
2014-01-07 13:18:00 874.67040 892.06753 874.67040 892.06753
2014-01-07 13:19:00 NaN NaN NaN NaN
2014-01-07 13:20:00 NaN NaN NaN NaN
2014-01-07 13:21:00 883.23085 883.23085 874.48165 874.48165
2014-01-07 13:22:00 NaN NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
对于每个 NaN,它们应该取前一周期的收盘值。
编辑:我尝试过使用 df.fillna(method='ffill') 但它使每个 NaN 直接在其上方取值。我希望每个 NaN 只取其之前的 Close 值。
使用填充产量:
open high low close
Timestamp
2014-01-07 13:18:00 874.67040 892.06753 874.67040 892.06753
2014-01-07 13:19:00 874.67040 892.06753 874.67040 892.06753
Run Code Online (Sandbox Code Playgroud)
但我正在寻找:
open high low close
Timestamp
2014-01-07 13:18:00 874.67040 892.06753 874.67040 …Run Code Online (Sandbox Code Playgroud) 我正在构建一个 Python 模块,其结构如下:
mypackage/
mypackage/
__init__.py
etc.py
setup.py
setup.cfg
pyproject.toml
Run Code Online (Sandbox Code Playgroud)
为了构建它,我正在运行$ python -m build。我注意到版本号不可用(例如mypackage.__version__安装后未定义),目前我只是手动设置它,如下所示:
安装程序.py
setup(..., version='0.0.1' )
Run Code Online (Sandbox Code Playgroud)
pyproject.toml
[project]
version = '0.0.1'
Run Code Online (Sandbox Code Playgroud)
我是 Python 包开发的新手,有一些关于此的帖子,但似乎没有标准的方法。
该包非常小,理想情况下我只想更新一个东西,比如__version__ = '0.0.1'inside __init__.py,然后在setup.py和中自动解析它pyproject.toml。
我有一个很大的 CSV 文件(磁盘上约 50 GB),但无法立即将其完全读入内存。数据集本身是面板数据,看起来像
ID Time Col 1 ... Col N
1 2000/1/1 ...
1 2000/1/2
...
2 2000/1/1 ...
...
Run Code Online (Sandbox Code Playgroud)
我加载这些数据的想法是以块的形式读取它,进行一些预处理以减少大小,然后单独保存每个块。我知道使用pd.read_csv(..., chunksize=1000)它可以让我循环遍历大小为 1000 的块,但为了使预处理准确,我更愿意循环遍历与 ID 列相对应的块。(需要对特定的所有行ID进行准确的预处理)
换句话说,假设我有一个较小的文件,其中包含所有值ID(例如 1-1000)。然后,我想做一些类似的事情
list_of_id_chunks = [ [1,2,3], [4,5,6], [7,8,9], ... ] # Split the total IDs into chunks of 3 IDs each
for chunk_of_ids in list_of_id_chunks:
# 1. Read the large csv file with only the rows where `ID` is in chunk_of_ids
# (For the first iteration, …Run Code Online (Sandbox Code Playgroud)