我正在使用# Example with 2 waves in 2 df
model_ADI_aff <- "aff =~ bds89 + bds39 + bds50 + bds29 + bds84 + bds49 + bds70 + bds88 + bds11 + bds28
"
fit_ADI_aff_1 <- cfa(model_ADI_aff,
data = bds_1,
missing = "fiml",
estimator = "MLR",
se = "robust.huber.white",
test = "yuan.bentler")
summary(fit_ADI_aff_1, standardized = TRUE, fit.measures = TRUE)
modindices(fit_ADI_aff_1, sort.=TRUE, minimum.value=3)
fit_ADI_aff_2 <- cfa(model_ADI_aff,
data = bds_2,
missing = "fiml",
estimator = "MLR",
se = "robust.huber.white",
test = "yuan.bentler")
summary(fit_ADI_aff_2, standardized = TRUE, fit.measures = TRUE)
modindices(fit_ADI_aff_2, sort.=TRUE, minimum.value=3)
读取csv文件,该文件的数据如下所示,
DictReader()
我正在阅读并从两个列表中取出,
NAMES,DATA
Name1,abcd
Name1,efgh
Name1,fgdh
Name2,xjbjk
Name2,flfnd
但是我希望Name1与其对应的数据进行映射,如下所示(或采用其他某种格式,以便我可以对其进行迭代以获取某些特定值)
L1 = ['Name1','Name1','Name1','Name2','Name2']
L2 = ['abcd','efgh','fgdh','xjbjk','flfnd']
有人可以建议采取任何方式进行此操作吗?
预先感谢!
答案 0 :(得分:2)
DictReader
为您提供了一个入门指南。逐行建立结果,而不是将输入分为两个列表。
import collections
from operator import itemgetter
result = collections.defaultdict(list)
get_pair = itemgetter("NAME", "DATA")
with open("tmp.csv") as f:
d = csv.DictReader(f)
for row in d:
name, value = get_pair(result)
result[name].append(value)
defaultdict
确保您第一次尝试使用result[name]
作为键时,name
是一个列表。 get_pair
是等效于
def get_pair(d):
return d["NAME"], d["DATA"]
答案 1 :(得分:1)
假设您已经有两个列表...
L1 = ['Name1','Name1','Name1','Name2','Name2']
L2 = ['abcd','efgh','fgdh','xjbjk','flfnd']
这有效:
d = {}
for k, v in zip(L1, L2):
d.setdefault(k, []).append(v)
像这样:
>>> d
{'Name1': ['abcd', 'efgh', 'fgdh'], 'Name2': ['xjbjk', 'flfnd']}