首页 > 解决方案 > 熊猫阅读Excel和所需数据的拆分部分

问题描述

您好,我有一个需要排序的 excel 文件。我想拆分数据部分。数据的每个部分都由两个换行符分割。

我尝试使用 \n\nstr(dfs).split('\n\n')拆分数据,但它只是进行一个包含所有数据的拆分。简而言之,没有进行拆分。

到目前为止的代码:

import pandas as pd
file_name = "Data of 2020-09-12 .xlsx"

dfs = pd.read_excel(file_name,'Sheet1')
dfs = dfs.fillna('') 
dfs = str(dfs).split("\n\n")
print(dfs)

Excel 数据文件

这是的输出Dataframe 输出

标签: pythonpandasdataframesplitxlsx

解决方案


这是您可以做到这一点的一种方法。该代码几乎是不言自明的,但如果有任何混淆,请随时询问。

基本思路是先迭代df,找到df中空行的所有索引位置。然后你在这些位置拆分 df 。

该解决方案假定具有第一列值 '' 的行为空。

import pandas as pd
file_name = "test.xlsx"

df = pd.read_excel(file_name)
df = df.fillna('') 
df_temp = df.copy()

#find all section positions. We are doing p+2 since there are 2 empty rows dividing the section
pos = []
while True:
    try:
        empty = ''
        p = df_temp.index[df_temp.iloc[:, 0] == empty][0]
        df_temp = df_temp.iloc[p+2:]
        pos.append(p)
    except:
        break
print(pos)

#Generate new dfs by splitting on the positions
list_df = []
start = 0
for p in pos:
    print(start,p)
    subdf = df.iloc[start:p]
    list_df.append(subdf)
    start = p+2
    
subdf = df.iloc[start:]
list_df.append(subdf)

#Print your dfs
for d in list_df:
    print(d)


推荐阅读