The documentation似乎有点稀疏,关于每个元素的工作方式,所以这里有:
我有一堆文件,我想迭代并为每个文件导出一个图。
df_all.head()
返回
Dem-Dexc Aem-Dexc Aem-Aexc S E fit frame filename
0 18150.0595 18548.2451 15263.7451 0.7063 0.5054 0.879 1.0 Traces_exp22_tif_pair16.txt
1 596.9286 7161.7353 1652.8922 0.8244 0.9231 0.879 2.0 Traces_exp22_tif_pair16.txt
2 93.2976 3112.3725 2632.6667 0.5491 0.9709 0.879 3.0 Traces_exp22_tif_pair16.txt
3 1481.1310 4365.4902 769.3333 0.8837 0.7467 0.879 4.0 Traces_exp22_tif_pair16.txt
4 583.1786 6192.6373 1225.5392 0.8468 0.9139 0.879 5.0 Traces_exp22_tif_pair16.txt
现在我想分组和迭代:
for group in df_all.groupby("filename"):
plot = sns.regplot(data = group, x = "Dem-Dexc", y = "frame")
但我得TypeError: tuple indices must be integers or slices, not str
。为什么我会这样做?
答案 0 :(得分:1)
我认为你需要改变:
for group in df_all.groupby("filename")
为:
for i, group in df_all.groupby("filename"):
plot = sns.regplot(data = group, x = "Dem-Dexc", y = "frame")
解压缩tuples
。
或者按[1]
选择元组的第二个值:
for group in df_all.groupby("filename"):
plot = sns.regplot(data = group[1], x = "Dem-Dexc", y = "frame")
您可以通过以下方式检查tuple
输出:
for group in df_all.groupby("filename"):
print (group)
('Traces_exp22_tif_pair16.txt', Dem-Dexc Aem-Dexc Aem-Aexc S E fit frame \
0 18150.0595 18548.2451 15263.7451 0.7063 0.5054 0.879 1.0
1 596.9286 7161.7353 1652.8922 0.8244 0.9231 0.879 2.0
2 93.2976 3112.3725 2632.6667 0.5491 0.9709 0.879 3.0
3 1481.1310 4365.4902 769.3333 0.8837 0.7467 0.879 4.0
4 583.1786 6192.6373 1225.5392 0.8468 0.9139 0.879 5.0
filename
0 Traces_exp22_tif_pair16.txt
1 Traces_exp22_tif_pair16.txt
2 Traces_exp22_tif_pair16.txt
3 Traces_exp22_tif_pair16.txt
4 Traces_exp22_tif_pair16.txt )
VS
for i, group in df_all.groupby("filename"):
print (group)
Dem-Dexc Aem-Dexc Aem-Aexc S E fit frame \
0 18150.0595 18548.2451 15263.7451 0.7063 0.5054 0.879 1.0
1 596.9286 7161.7353 1652.8922 0.8244 0.9231 0.879 2.0
2 93.2976 3112.3725 2632.6667 0.5491 0.9709 0.879 3.0
3 1481.1310 4365.4902 769.3333 0.8837 0.7467 0.879 4.0
4 583.1786 6192.6373 1225.5392 0.8468 0.9139 0.879 5.0
filename
0 Traces_exp22_tif_pair16.txt
1 Traces_exp22_tif_pair16.txt
2 Traces_exp22_tif_pair16.txt
3 Traces_exp22_tif_pair16.txt
4 Traces_exp22_tif_pair16.txt
如果想将输出保存到图片png
:
for i, group in df_all.groupby("filename"):
plot = sns.regplot(data = group, x = "Dem-Dexc", y = "frame")
fig = plot.get_figure()
fig.savefig("{}.png".format(i.split('.')[0]))