来自熊猫的convert_dtypes()问题

时间:2020-03-27 10:47:29

标签: python pandas type-conversion

我正试图从.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代替。有没有一种方法可以解决此问题,而无需单独指定每个列类型?

下图显示了提取所有数据后的数据结构。

Data structure after extraction

0 个答案:

没有答案