python - 熊猫阅读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)
解决方案
这是您可以做到这一点的一种方法。该代码几乎是不言自明的,但如果有任何混淆,请随时询问。
基本思路是先迭代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)
推荐阅读
- java - 从 Java/Spring 向 AWS S3 发送文件时出错
- vb.net - OleDbDataAdapter 不喜欢 LIKE 条件
- c - 试图找到一种优雅的方式在多方向的二维数组中找到相邻元素
- c# - C# 字符串转字节数组(带预设字符串格式)
- filter - 在 Tableau 上隐藏整个筛选器
- r - 离散随机变量的“一个接一个”实现
- python - ResolvePackageNotFound 错误:创建 Conda 环境时
- java - Android 错误:无法找到明确的活动类
- c - 具有可变长度的字符串的数组问题(可能未初始化可变大小的对象)
- three.js - 如何在反应三纤维中渲染另一个物体的发射材料的反射?