Aco*_*orn 5 python numpy pandas
我的问题需要将行增量添加到排序中DataFrame(使用 a DateTimeIndex),但我目前无法找到有效的方法来执行此操作。似乎没有任何“insort”的概念。
我尝试过附加行并就地排序,并且我还尝试使用searchsorted切片和连接来获取插入点以创建新的DataFrame. 两者都“太慢”。
Pandas 是否不适合无法立即获得所有数据而是增量获取数据的工作?
我尝试过的解决方案:
级联
def insert_data(df, data, index):
insertion_index = df.index.searchsorted(index)
new_df = pandas.concat([df[:insertion_index], pandas.DataFrame(data, index=[index]), df[insertion_index:]])
return new_df, insertion_index
Run Code Online (Sandbox Code Playgroud)
度假胜地
def insert_data(df, data, index):
new_df = df.append(pandas.DataFrame(data, index=[index]))
new_df.sort_index(inplace=True)
return new_df
Run Code Online (Sandbox Code Playgroud)
pandas是建立在numpy. numpy 数组是固定大小的对象。虽然有 numpy 的追加和插入函数,但实际上它们从旧数据和新数据构造新数组。
有两种实用方法可以增量定义这些数组:
初始化一个大的空数组,并增量填充值
增量创建一个 Python 列表(或字典),并从完成的列表中创建数组。
追加到 Python 列表是一项常见且快速的任务。还有列表插入,但速度较慢。对于排序插入,有专门的 Python 结构(例如bisect)。
Pandas 可能添加了处理常见创建场景的功能。但除非它用 C 语言编写了一些特殊的代码,否则它不太可能比更基本的 Python 结构更快。
即使您必须在增量构建过程中的各个点使用 Pandas 功能,最好还是从底层 Python 结构动态创建一个新的 DataFrame。
| 归档时间: |
|
| 查看次数: |
2607 次 |
| 最近记录: |