gpt4 book ai didi

python - 当某些单元格有多行时如何读取excel文件

转载 作者:行者123 更新时间:2023-12-04 22:15:41 24 4
gpt4 key购买 nike

我必须阅读多个大型 excel 文件才能尝试清理数据。
我要解决最后一个问题,即某些单元格中有多行,或者我猜某些单元格跨越多行。
它是这样的:

Index Col1 Col2   Col3
1 row1 row1 row1
2 row1.1
3 row1.2
4 row2 row2 row3
当我使用 Pandas.read_excel(filename) 或 Pandas.ExcelFile 然后 sheet.parse(sheetname) 它当然会在索引 2 和 3 中读取大部分空白行。
根据 Col1 的跨度,我将如何将索引 2 和 3 合并为 1?
要明确我的问题是:我如何读取 excel 文件并根据第一列跨越的行合并行?这甚至可能吗?
谢谢

最佳答案

我不知道这个功能是内置在 Pandas 中的,因为坦率地说 Excel 不打算这样使用,但人们仍然倾向于滥用它。伙计,我讨厌 Excel ......但这是另一个主题的主题。
我认为您最好的选择是根据您知道适用于这些文件的逻辑定义自定义函数。由于我目前正在处理一个处理各种格式错误的 Excel 文件的项目,因此我对这种垃圾非常熟悉。
这是我的建议,基于我对数据的理解和您的要求。它可能需要根据文件的具体情况进行更改。

last_valid = None
check_cols = [] # if only need to check a subset of cols for validity, do it here

for i, s in df.iterrows(): # This is slow, but probably necessary in this case
""" If all the rows are valid, we want to keep it as a reference in case
the following rows are not """
if all(s[check_cols].notna()):
lvi, last_valid = i, s
# need to store index and series so we can go back and replace it
continue
else: # here is the critical part
extra_vals = s[s.notna()] # find cells in row that have actual values
for col in extra_vals.index:
""" I'm creating a list and appending here since I don't know
your values or how they need to be handled exactly"""
last_valid[col] = list(last_valid[col]).append(extra_vals[col])
# replace that row in the dataframe
df.iloc[lvi, :] = last_valid

# drop extra rows:
df = df.dropna(axis=0, subset=check_cols)
希望这对你有用!

关于python - 当某些单元格有多行时如何读取excel文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69844101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com