Python:访问熊猫中的单元格值并执行数学运算

时间:2018-10-18 21:13:28

标签: python excel pandas

我有一个包含4行4列的excel文件,列标签分别为1,2,3,4

               1      2        3       4
 Row   1      12      10       7       6
 Row   2      16      22       9      18
 Row   3      26      10      10       5
 Row   4      24       5      17       1

我希望访问第3行的col 1整数值和第4行的col 1整数值,以检查两个单元格相加是否等于50。在这种情况下,任何(p,q,r)组合都应加上(row q,col p)和(row r,col p)值,如果值= 50,则返回(p,q,r)作为组合。

在这种情况下,输出应为:(1,3,4)

import pandas as pd

import numpy as np

a = [1,2,3,4]

df = pd.read_excel('example.xlsx', sheetname='Sheet1')

combo = [(p,q,r) for p in a for q in a for r in a 
                  if (df.iloc[q,p] + df.iloc[r,p] = 50)]

print (combo)

更新

对此进行了尝试,但稍作修改,即我正在表格的各列之间进行计算:

组合(1、3、4)现在应在以下单元格中查找值

(1,1)(1,3)(1,4)

(3,1)(3,3)(3,4)

(4,1)(4,3)(4,4)

import numpy as np

import pandas as pd

df = pd.read_excel('example.xlsx', sheetname='Sheet1')

df.index = list(range(1, df.shape[1] + 1))
df.columns = list(range(1, df.shape[1] + 1))

combo = [(p,q,r) for p in df.columns for q in df.columns for r in df.columns 
          if q > p and r > q and r > p
          and df.loc[p,p] - df.loc[p,q] == df.loc[q,p] - df.loc[q,q]]

我收到以下错误

ValueError:长度不匹配:预期轴包含3个元素,新值包含4个元素

1 个答案:

答案 0 :(得分:0)

首先,确保您的DataFrame索引和列都是从1开始的整数索引(与输入数据一致):

df.index = list(range(1, df.shape[0] + 1))
df.columns = list(range(1, df.shape[1] + 1))

接下来,您的列表理解是正确的:

[(p,q,r) for p in df.index for q in df.index for r in df.columns 
 if df.loc[q,p] + df.loc[r,p] == 50]

# Output
[(1, 3, 4), (1, 4, 3)]