以excel中特定单元格的值为条件

时间:2018-12-04 21:10:49

标签: python pandas matlab

我正在尝试在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也是二维矩阵

1 个答案:

答案 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