我可以从Pandas中的集合创建一个数据框架吗?


relations = []
... 
rel_dict = {'start': start, 'end': end, 'type': relationship}
if rel_dict not in relations:
relations.append(rel_dict)

rel_df = pd.DataFrame(relations)

,这是我的代码创建一个dataframe以下减缓很多:

if rel_dict not in relations

如果我将"关系"定义为一个集合,DataFrame可以使用一个集合来创建一个数据框架吗?如果我还想保持集合的顺序,我可以这样做吗?

或者我应该把"关系"定义为字典:

from collections import OrderedDict
relations = OrderedDict()
... 
if rel_dict not in relations:
relations[rel_dict] =  rel_dict
你的建议是什么?

两个想法:

首先,使用frozendict,它类似于python字典,但可哈希(并且不可变)。Pandas的数据框架构造函数不介意获取一组冻结的字典,所以这可以工作:

relations = set()
...
rel_dict = frozendict(start=start, end=end, type=relationship)
relations.add(rel_dict)
rel_df = pd.DataFrame(relations)

这将失去排序,所以为了保持它,我们可以将set替换为dict(您正在使用python 3.6或更高版本,对吗?)

relations = dict()
...
rel_dict = frozendict(start=start, end=end, type=relationship)
relations[rel_dict] = None
rel_df = pd.DataFrame(relations.keys())

第二,把整个东西喂给熊猫,然后在

df = pd.DataFrame(rel_dicts).drop_duplicates(keep='first')

不知道哪一个更快,你必须试一试。

相关内容

  • 没有找到相关文章

最新更新