我正试图从.xlsx文件中提取数据,这有点混乱。我已经设法提取了所需的数据,并将其写入到excel文件输出中,但是我非常想将数字转换为“即时”浮动,以便我可以将脚本重用于其他类似的实例文件。
这是我到目前为止所拥有的:
import pandas as pd
from pathlib import Path
data_folder = Path("Data/")
file = data_folder / "Binder1.pdf.xlsx"
data = pd.read_excel(file, header=None, index_col=None)
Names = list(data.loc[data[0] == 'Injection Name:'] [2])
headers = data[data[1].astype(str).str.contains("Peak")].dropna(axis=1, how='all').
iloc[0, :].str.replace(r'\n', ' ')
subset = data[data[1].astype(str).str.contains("Compound")]
my_results = subset.dropna(axis=1, how='all')
my_results.index = Names
my_results.columns = headers
result = pd.DataFrame
for col in my_results:
str_results = my_results[col].astype(str).
str.replace('not valid', 'NotValid').str.replace('n.a.', '0').str.replace(r'\n', ' ')
str_final = str_results.str.split(' ').explode()
if not result.empty:
str_final_x = str_final.convert_dtypes()
result = pd.concat([result, str_final], axis=1, ignore_index=False)
else:
result = str_final.to_frame()
final = result[result['Peak Name'].astype(str).str.contains("Compound_X")]
final.to_excel("Output.xlsx")
我希望.convert_dtypes()能够自动识别列的数据类型,但是所有内容都以文本形式出现。更复杂的是,行值有时被写为“ n.a.”,因此下面用0代替。有没有一种方法可以解决此问题,而无需单独指定每个列类型?
下图显示了提取所有数据后的数据结构。