<p>你有几个问题要处理。第一个是列表在名称字符串和一组值之间交替。一个将这种交替转换成成对的快速生成器修复了这个问题。可以使用正则表达式将数据中的名称转换为所需的列名。您的值有不同的长度,因为它们是集合,所以它们的顺序是随机的。我们可以将它们转换为命名系列,但无法解决顺序问题。最后,连接该系列,就得到了数据帧</p>
<pre><code>import re
import pandas as pd
import numpy as np
# extracts channel name from ex. "preprocessed\\AB_30624_badchannels.set"
colname_re = re.compile(r"\\(.*?)_badchannels.set")
# test data set
data = ['preprocessed\\AB_30624_badchannels.set', {'E88', 'E91', 'E248', 'E139', 'E245', 'E216', 'E111'}, 'preprocessed\\ACM_98630_badchannels.set', {'E88', 'E186', 'E91', 'E139', 'E102', 'E216', 'E111', 'E238'}, 'preprocessed\\AL_96705_badchannels.set', {'E88', 'E37', 'E91'}]
def iter_pairs(seq):
"""Iterate seq as pairs. E.g, (1,2,3,4) iterates as (1,2) then (3,4)"""
iseq = iter(seq)
try:
while True:
yield next(iseq), next(iseq)
except StopIteration:
pass
# create list of named series for the dataframe
interim_series = [pd.Series(list(values), name=colname_re.search(name).group(1))
for name, values in iter_pairs(data)]
# build dataframe, convert NaN to ""
df = pd.concat(interim_series, axis=1)
del interim_series
df = df.replace(np.NaN, "")
print(df)
</code></pre>