我正在尝试将Excel表读取到数据框中。该表包含一些在数据框中显示为空白的空单元格。我希望这些空单元格用相同列中的最后一个设置值(位于空单元格之前)填充。我可以用三行代码来完成这项工作,它们基本上可以完成这项工作,但看起来有点麻烦。我想知道是否有更准确的方法?至少在read_excel中设置键以将空单元格转换为NA
代码:
import pandas as pd
import numpy as np
df = pd.read_excel(r'C:\Users\test\play.xlsm', sheet_name = 'C.1',
skiprows = 11, nrows = 52, usecols = 'B:I', header = None, na_values = r'^\s*$')
df = df.replace(r'^\s*$', np.nan, regex=True)
df[1] = pd.Series(df[1]).fillna(method='ffill')
print(df.head(20))
原始数据帧
10 iC5 i-Pentane 1.205 0.553 1.243 3.350 1.238 2.118
11 nC5 n-Pentane 1.787 0.821 1.331 3.587 1.385 2.368
12 C6 Hexanes 4.946 2.714 1.317 4.207 1.738 3.549
13 Me-Cyclo-pentane 1.471 0.788 0.235 0.739 0.381 0.761
14 Benzene 0.126 0.063 0.021 0.062 0.034 0.062
15 Cyclo-hexane 2.487 1.332 0.428 1.347 0.672 1.340
16 C7 Heptanes 7.109 4.534 0.475 1.768 1.258 2.987
17 Me-Cyclo-hexane 6.220 3.888 0.374 1.372 1.066 2.481
18 Toluene 1.286 0.754 0.065 0.225 0.210 0.458
19 C8 Octanes 10.151 7.381 0.235 0.997 1.407 3.810
我需要获取的数据帧:
10 iC5 i-Pentane 1.205 0.553 1.243 3.350 1.238 2.118
11 nC5 n-Pentane 1.787 0.821 1.331 3.587 1.385 2.368
12 C6 Hexanes 4.946 2.714 1.317 4.207 1.738 3.549
13 C6 Me-Cyclo-pentane 1.471 0.788 0.235 0.739 0.381 0.761
14 C6 Benzene 0.126 0.063 0.021 0.062 0.034 0.062
15 C6 Cyclo-hexane 2.487 1.332 0.428 1.347 0.672 1.340
16 C7 Heptanes 7.109 4.534 0.475 1.768 1.258 2.987
17 C7 Me-Cyclo-hexane 6.220 3.888 0.374 1.372 1.066 2.481
18 C7 Toluene 1.286 0.754 0.065 0.225 0.210 0.458
19 C8 Octanes 10.151 7.381 0.235 0.997 1.407 3.810
同样,代码可以工作,但看起来很难看。我想知道是否有办法使正则表达式在“na_values”键中工作
如果需要一行解决方案
Series
构造函数是不必要的,则replace
仅用于此列,最后一行可以使用ffill
用于.fillna(method='ffill')
的shorcut:相关问题 更多 >
编程相关推荐