DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DAPyDataFrame.h
1#ifndef DAPYDATAFRAME_H
2#define DAPYDATAFRAME_H
3#include "DAPyBindQtGlobal.h"
4#include "DAPyObjectWrapper.h"
5#include "DAPyIndex.h"
6#include "DAPybind11InQt.h"
7#include "DAPySeries.h"
8#include <QVariant>
9#include <QDebug>
10#include <QList>
11namespace DA
12{
18class DAPYBINDQT_API DAPyDataFrame : public DAPyObjectWrapper
19{
20public:
25 DAPyDataFrame(const pybind11::object& obj);
26 DAPyDataFrame(pybind11::object&& obj);
28 // 获取列
29 // 注意pandas.dataframe的列名是可以任意类型,如果列名是数字,那么熟通过数字来获取而不是用字符串,
30
31 DAPySeries operator[](const QString& n) const;
32 DAPySeries operator[](size_t n) const;
33 DAPyDataFrame& operator=(const pybind11::object& obj);
34 DAPyDataFrame& operator=(const DAPyDataFrame& obj);
35 DAPyDataFrame& operator=(const DAPyObjectWrapper& obj);
36 DAPyDataFrame& operator=(pybind11::object&& obj);
37 DAPyDataFrame& operator=(DAPyDataFrame&& obj);
38 DAPyDataFrame& operator=(DAPyObjectWrapper&& obj);
39 // 重写小于操作,用于std::map容器,注意,这个小于仅仅比较指针的大小,没有任何意义
40 bool operator<(const DAPyDataFrame& other) const;
41
42public:
43 // DataFrame.columns
44 QList< QString > columns() const;
45 QString columnName(std::size_t i) const;
46 bool columns(std::size_t i, const QString& name);
47 bool columns(const QList< QString >& cols);
48 // DataFrame.empty
49 bool empty() const;
50 // DataFrame.shape
51 std::pair< std::size_t, std::size_t > shape() const;
52 // DataFrame.size
53 std::size_t size() const;
54 // DataFrame.iat
55 QVariant iat(std::size_t r, std::size_t c) const;
56 pybind11::object iatObj(std::size_t r, std::size_t c) const;
57 bool iat(std::size_t r, std::size_t c, const QVariant& v);
58 bool iat(std::size_t r, std::size_t c, const pybind11::object& v);
59 // DataFrame.loc 获取一行
60 DAPySeries iloc(std::size_t c) const;
61 DAPySeries loc(const QString& n) const;
62 bool drop(std::size_t index, int axis = 0);
63 DAPyIndex index() const;
64 // 获取某一列对应的dtype
65 pybind11::dtype dtypes(std::size_t c) const;
66 DAPyDataFrame describe() const;
67 // 转换为csv
68 bool to_csv(const QString& path, const QVariantHash& args = QVariantHash()) const noexcept;
69 // 转换为pickle
70 bool to_pickle(const QString& path, const QVariantHash& args = QVariantHash()) const noexcept;
71 // 转换为parquet
72 bool to_parquet(const QString& path, const QVariantHash& args = QVariantHash()) const noexcept;
73 // 设置为索引,错误会抛出异常
74 bool setIndex(const QString& colName, bool isDrop = true) noexcept;
75
76protected:
77 // 检测是否为dataframe,如果不是将会设置为none
78 void checkObjectValid();
79
80public:
81 QString toString(std::size_t maxrow = 12) const;
82 static bool isDataFrame(const pybind11::object& obj);
83
84public:
85 bool read_csv(const QString& path, const QVariantHash args = QVariantHash(), QString* why = nullptr);
86};
87} // namespace DA
88DAPYBINDQT_API QDebug operator<<(QDebug dbg, const DA::DAPyDataFrame& df);
89
90Q_DECLARE_METATYPE(DA::DAPyDataFrame)
91#endif // DADATAFRAME_H
非模板类的DataFrame
Definition DAPyDataFrame.h:19
对pandas.index的封装
Definition DAPyIndex.h:15
这是针对pubind11::object的封装
Definition DAPyObjectWrapper.h:15
对Pandas.Series的Qt封装
Definition DAPySeries.h:22
序列化类都是带异常的,使用中需要处理异常
Definition AppMainWindow.cpp:44