我正在尝试在python中编写以下matlab代码:
function[x,y,z] = Testfunc(filename, newdata, a, b)
sheetname = 'Test1';
data = xlsread(filename, sheetname);
if data(1) == 1
newdata(1,3) = data(2);
newdata(1,4) = data(3);
newdata(1,5) = data(4);
newdata(1,6) = data(5)
else
....
....
....
这是个很长的功能,但这是我被困住的地方,根本没有任何线索。 这是我到目前为止在python中编写的内容:
import pandas as pd
def test_func(filepath, newdata, a, b):
data = pd.read_excel(filepath, sheet_name = 'Test1')
if data[0] == 1:
我被困在这里,我什至也不确定'if'陈述是否正确。我正在寻找建议和帮助。
信息:excel工作表有1行13列,newdata也是二维矩阵
答案 0 :(得分:2)
尝试运行该代码并打印出数据框(print(data)
)。您将看到数据框与MATLAB矩阵不同。 read_excel
将尝试推断您的列,因此您可能没有行而只有列。要防止熊猫阅读该列,请使用:
data = pd.read_excel(filepath, sheet_name='Test1', header=None)
使用索引访问data
将对该行建立索引。因此,您的比较试图查找该行是否等于1(在您的情况下永远不会如此)。要索引给定的单元格,必须首先索引该行。要实现您在MATLAB中所做的工作,请在数据框iloc
上使用data.iloc[0,0]
索引器。这在访问行0的元素0中的作用。您的代码应如下所示:
import pandas as pd
def test_func(filepath, newdata, a, b):
data = pd.read_excel(filepath, sheet_name = 'Test1')
if data.iloc[0,0] == 1:
newdata.iloc[0,2:6] = data.iloc[0,1:5]
....
我建议您阅读indexing in pandas。