繁体   English   中英

从迭代字典追加到列表

[英]Appending to a list from an iterated dictionary

我已经写了一段脚本,目前可以确定。 我试图实现的是此的自动版本:

file1 = tkFileDialog.askopenfilename(title='Select the first data file')
file2 = tkFileDialog.askopenfilename(title='Select the first data file')
TurnDatabase = tkFileDialog.askopenfilename(title='Select the turn database file')

headers = pd.read_csv(file1, nrows=1).columns
data1 = pd.read_csv(file1)
data2 = pd.read_csv(file2)

这就是收集数据的方式。 还有更多的代码行专注于挑选数据位。 我不会发布所有内容。

这就是我要凝结的:

EntrySummary = []
for key in Entries1.viewkeys():
    MeanFRH = Entries1[key].hRideF.mean()
    MeanFRHC = Entries1[key].hRideFCalc.mean()
    MeanRRH = Entries1[key].hRideR.mean()
# There's 30 more lines of these...
# Then the list is updated  with this:
EntrySummary.append({'Turn Number': key, 'Avg FRH': MeanFRH, 'Avg FRHC': MeanFRHC, 'Avg RRH': MeanRRH,... # and so on})


EntrySummary = pd.DataFrame(EntrySummary)
EntrySummary.index = EntrySummary['Turn Number']
del EntrySummary['Turn Number']

这是旧的代码。 我试图做的是这样的:

EntrySummary = []

for i in headers():
    EntrySummary.append({'Turn Number': key, str('Avg '[i]): str('Mean'[i])})
    print EntrySummary
# The print is only there for me to see if it's worked. 

但是我在一分钟出现此错误:

for i in headers():
TypeError: 'Index' object is not callable

关于我在哪里犯了错误的任何想法? 我可能已经做了一些...

先感谢您

奥利

如果我正确地理解了您的情况,则希望将您显示的“旧代码”中的一长串分配替换为另一个循环,该循环使用数据文件中的标头列表自动处理所有不同的项目。

我认为这是您想要的:

EntrySummary = []
for key, value in Entries1.viewitems():
    entry = {"Turn Number": key}
    for header in headers:
        entry["Avg {}".format(header)] = getattr(value, header).mean()
    EntrySummary.append(entry)

您可能可以提出一些更好的变量名称,因为您知道Entries1中的键和值是Entries1 (我不知道,所以我使用了通用名称)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM