我是熊猫的新手。我需要阅读line 61, in timerEvent
if self.step >= len(self.image_files):
TypeError: object of type 'MainWindow' has no len()
文件,并使用from PyQt4 import QtCore, QtGui
import sys
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class MainWindow(QtGui.QMainWindow):
#(self, parent=None) <- original code
def __init__(self, image_files, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setupUi(self)
#Initialized Widget here
self.slides_widget = Slides(self)
self.setCentralWidget(self.slides_widget)
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(1012, 532)
self.tabWidget = QtGui.QTabWidget(Form)
self.tabWidget.setGeometry(QtCore.QRect(470, 130, 451, 301))
self.tabWidget.setObjectName(_fromUtf8("tabWidget"))
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(_translate("Form", "Form", None))
class Slides(QtGui.QWidget):
def __init__(self, image_files, parent=None):
QtGui.QWidget.__init__(self, parent)
self.image_files = image_files
self.label = QtGui.QLabel("", self)
self.label.setGeometry(50, 150, 450, 350)
#button
self.button = QtGui.QPushButton(". . .", self)
self.button.setGeometry(200, 100, 140, 30)
self.button.clicked.connect(self.timerEvent)
self.timer = QtCore.QBasicTimer()
self.step = 0
self.delay = 3000 #ms
sTitle = "DIT Erasmus Page : {} seconds"
self.setWindowTitle(sTitle.format(self.delay/1000.0))
def timerEvent(self, e=None):
if self.step >= len(self.image_files):
self.timer.start(self.delay, self)
self.step = 0
return
self.timer.start(self.delay, self)
file = self.image_files[self.step]
image = QPixmap(file)
self.label.setPixmap(image)
self.setWindowTitle("{} --> {}".format(str(self.step), file))
self.step += 1
image_files = ["slide1.jpg", "slide2.jpg", "slide3.jpg", "slide4.jpg"]
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
Form = MainWindow(image_files)
ui = MainWindow(image_files)
Form.show()
sys.exit(app.exec_())
将第一列转换为dict和第二列的键,转换为dict的值。我还需要跳过/排除第一行标题。
答案here适用于xlsx
,here适用于pandas
。我需要使用pymysql
。
以下是excel数据示例
csv
我的代码到目前为止如下。
pandas
但是,它给了我dict,其中键是列号,值是column1数据和column2数据。
dict_key dict_value
key1 str_value1
key2 str_value2
key3 None
key4 int_value3
我想要的是将column1数据作为键,将第二列数据作为值,并将import pandas as pd
excel_file = "file.xlsx"
xls = pd.ExcelFile(excel_file)
df = xls.parse(xls.sheet_names[0], skiprows=1, index_col=None, na_values=['None'])
data_dict = df.to_dict()
替换为>>> data_dict
{u'Chg_Parms': {0: u' key1 ', 1: u' key2 ', 2: u' key3 ', 3: u' key4 ', 4: u' str_value1 ',
5: u' str_value2 ', 6: u' Nan ', 6: u' int_value3 '}}
NaN
感谢您的帮助。
答案 0 :(得分:3)
您可以使用pandas read_excel方法更方便地读取excel文件。您可以传递一个index_col参数,您可以在其中定义xlsx的哪一列是索引。
如何将NaN更改为无在此question中解释。
给定一个名为example.xlsx的xlsx文件,它就像你上面写的那样构建,下面的代码应该给你预期的结果:
import pandas as pd
df = pd.read_excel("example.xlsx", index_col=0)
df = df.where(pd.notnull(df), None)
print df.to_dict()["dict_value"]
答案 1 :(得分:1)
您可以使用collections.OrderedDict
按键保持按键。您会注意到pd.read_excel
默认加载第一个工作表。编辑:然后您说您要对字典中的项进行编码,并将'None'
评估为None
...
import collections as co
import pandas as pd
df = pd.read_excel('file.xlsx')
df = df.where(pd.notnull(df), None)
od = co.OrderedDict((k.strip().encode('utf8'),v.strip().encode('utf8'))
for (k,v) in df.values)
结果:
>>> od
OrderedDict([(u'key1', u'str_value1'), (u'key2', u'str_value2'), (u'key3', u'None'), (u'key4', u'int_value3')])
一般说明:您应该在Python程序中将字符串保留为Unicode。