我最近开始探索python来分析excel数据。我有一个包含两个工作表的excel文件,每个工作表都有一个矩阵(m= 1000行和n= 999列),两个矩阵的.The元素是相互关联的:一个矩阵涉及位移值,另一个矩阵涉及与每个位移对应的力值。通过m=1000数值模拟和n= 999增量得到了位移和相应的力。是否有可能识别仅对应于整数的位移值的力值?或者,作为另一种选择,是否可以将位移矩阵中的所有十进制数替换为0?我试图将excel文件读入Pandas数据,但是,位移矩阵中的所有值似乎都表示为“实数”(例如excel中的数字"1“、"2”、"3“等等),其浮点数为"1.”、"2.“、”3“。在蟒蛇中)。感谢您的关注。
发布于 2020-09-27 09:01:42
让我们做一个小规模的例子(3 * 3)。
我用两个工作表准备了一个Excel文件,并读取它们:
displ = pd.read_excel('Input_2.xlsx', 'Displ')
forces = pd.read_excel('Input_2.xlsx', 'Forces')这两个DataFrames都包含:
displ forces
C1 C2 C3 C1 C2 C3
0 10.0 12.1 11.3 0 120.1 130.2 140.3
1 12.5 13.0 13.5 1 150.4 160.5 170.6
2 12.6 13.6 13.8 2 180.7 190.8 200.9要标识包含整数的displ元素(实际上,仍然是浮点数,但使用小数部分== 0.0),您可以运行:
displ.mod(1.0) == 0.0你会得到:
C1 C2 C3
0 True False False
1 False True False
2 False False False要获得其他值的相应力值和NaN,可以运行:
forces.where(displ.mod(1.0) == 0.0)得到:
C1 C2 C3
0 120.1 NaN NaN
1 NaN 160.5 NaN
2 NaN NaN NaN另一种选择是获得相应元素为零小数部分的displ中的索引列表。实际上,它是一个Numpy函数,因此它对基础Numpy数组进行操作,并返回整型(基于零的)索引:
ind = np.nonzero((displ.mod(1.0) == 0.0).values)结果是:
(array([0, 1], dtype=int64), array([0, 1], dtype=int64))因此,这是一个指数的二元组:
您还可以从强制(实际上也可以从基础Numpy数组)检索指示元素的列表,运行:
forces.values[ind]结果是:
array([120.1, 160.5])若要用零替换displ的“整型”元素,可以运行:
displ.mask(displ.mod(1.0) == 0.0, 0, inplace=True)现在,displ包含:
C1 C2 C3
0 0.0 12.1 11.3
1 12.5 0.0 13.5
2 12.6 13.6 13.8注意,“想要”的元素仍然是float零,但是这是Pandas的一个特性,每个列都有一个类型,适合这个列中的所有元素(在本例中只是浮动)。
https://stackoverflow.com/questions/64083134
复制相似问题