Это довольно легко сделать с Пандами .
Общий процесс:
Письменный код:
import pandas as pd
import numpy as np
#import data
df = pd.read_csv('Your_Filename.csv')
#initialize list
list_A = np.arange(365)
list_B = np.arange(365)*2
#change list to series
series_A = pd.Series(list_A)
series_B = pd.Series(list_B)
#save series as dataframe column
df['column_name_A'] = series_A.values
df['column_name_B'] = series_B.values
#save dataframe to csv
df.to_csv('output_filename.csv')
У меня есть что-то очень похожее, реализованное для нашей системы. Я хотел способ составить иерархию геометрического объекта и представить их в объеме. Я использовал составной шаблон для создания моего описания (корень был Узлом и затем произошел, ребенок был compositeNode (список Узлов).
CompositeNode имеет метод, принимают (), который принимает посетителя (Посетитель), и затем в принятии () Вы делаете посетителя-> посещение (это).
Таким образом Ваша иерархия посетителя имеет базовый класс как NodeVisitor и полученных посетителей как RenderVisitor (объекты рендеринга), ReportVisitor (выведенная информация об узле в текст). Ваш базовый класс должен будет принять и основу и специализированные типы узлов.
Таким образом да, комбинация работает, и у меня есть рабочий код, но я соглашаюсь, что дизайн прилагает больше усилий, чем, что Вы считали бы онлайн (Wiki или игрушечный пример).
Надеюсь, это поможет
Вот простой пример:
struct NodeVisitor;
struct Node
{
virtual ~Node() {}
virtual void accept(NodeVisitor &v);
};
struct CompositeNode : public Node
{
virtual void accept(NodeVisitor &v);
std::list<NodePtr> nodes_;
};
struct NodeVisitor
{
virtual ~NodeVisitor() {}
virtual void visit(Node &n) = 0;
virtual void visit(CompositeNode &cn)
{
for(std::list<NodePtr>::iterator it = cn.nodes_.begin(), end = cn.nodes_.end(); it != end; ++it)
{
(*it)->accept(*this);
}
}
};