Skip to content
Snippets Groups Projects

FIX: `to_table` failed on lists

All threads resolved!

Files

+ 13
14
@@ -25,6 +25,7 @@ import re
@@ -25,6 +25,7 @@ import re
import sys
import sys
import caosdb as db
import caosdb as db
 
import numpy as np
import pandas as pd
import pandas as pd
@@ -48,27 +49,25 @@ def generate_property_name(prop):
@@ -48,27 +49,25 @@ def generate_property_name(prop):
def to_table(container):
def to_table(container):
""" creates a table from the records in a container """
"""Create a table from the records in a container."""
if len(container) == 0:
if len(container) == 0:
raise ValueError("Container is empty")
return pd.DataFrame()
properties = set()
rts = {p.name for p in container[0].parents}
 
data = []
for rec in container:
for rec in container:
properties.update([generate_property_name(p)
if {p.name for p in rec.parents} != rts:
for p in container[0].get_properties()])
df = pd.DataFrame(columns=list(properties))
rts = set([p.name for p in container[0].parents])
for ii, rec in enumerate(container):
if set([p.name for p in rec.parents]) != rts:
raise ValueError("Parents differ")
raise ValueError("Parents differ")
for p in rec.get_properties():
row_dict = {}
for prop in rec.get_properties():
df.loc[ii, generate_property_name(p)] = p.value
propname = generate_property_name(prop)
 
row_dict[propname] = prop.value
 
data.append(row_dict)
 
result = pd.DataFrame(data=data)
return df
return result
def from_table(spreadsheet, recordtype):
def from_table(spreadsheet, recordtype):
Loading