gpt4 book ai didi

python - 如何将数据框中的 2 行连接到新数据框中的 1 行?

转载 作者:太空宇宙 更新时间:2023-11-03 17:47:17 24 4
gpt4 key购买 nike

我正在过滤格式为 Excel 文件的外部数据源。我无法改变文件的生成方式。我需要过滤掉无用的行并将成对的行合并为一个。到目前为止,我的流程适用于过滤,但不适用于将两个连续行中的相关数据连接到一行中。

数据帧没有很好地适应 stackoverflow,但我在下面手动调整了它们。

数据转换

将下载内容转换为有用的格式

import pandas as pd
from pandas import DataFrame
from pandas.io.excel import read_excel
cpath = os.path.join (download_path, classes_report)
print (pd.__version__)

df = pd.read_excel (cpath, sheetname=0, header=None)
df.to_string()

0.14.1

0 1 2 3 4 5
0 届:2014-2015 NaN NaN NaN NaN NaN
1 类(class)信息 年龄 入学 key 室 NaN
2 数学 10 12/18 03396 110 09:00:00
3 老师: Joe M 老师 NaN NaN NaN NaN
4 南 南 南 南 南 南
5 南 南 南 南
6 南 南 南 南
7 南 南 南 南 南 南
8 南 南 南 南 南 南
9 类(class)人数:1 学生人数:12/18 NaN NaN NaN NaN
10 类(class)信息 入学年龄 关键房间 NaN
11 艺术 18 - 80 3/24 03330 110 10:00:00
12 老师:John A 讲师 NaN NaN NaN NaN
13 南 南 南 南 南 南
14 南 南 南 南
15 南 南 南 南

# Eliminate any rows where first column is NaN, contains 'Number of Classes', 'Class Information'
# or is blank
# The 5th column is tuition.

cf = df[df[0].notnull ()][1:]
cf = cf [~cf[0].str.contains ('Number of Classes')]
bf = cf[~cf[0].isin ([' ', 'Class Information'])]
bf.to_string()


0 1 2 3 4 5
2 数学 10 12/18 03396 110 09:00:00
3 老师: Joe M 老师 NaN NaN NaN NaN
11 艺术 18 - 80 3/24 03330 110 10:00:00
12 老师:John A 讲师 NaN NaN NaN NaN

left  = DataFrame(bf.values [::2], index=bf.index[::2])
right = DataFrame(bf.values [1::2], index=bf.index[1::2])
pd.concat([left, right], axis=1).to_string ()


0 1 2 3 4 5 0 1 2 3 4 5
2 数学 10 12/18 03396 110 09:00:00 NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN 老师:Joe M 老师 NaN NaN NaN NaN
11 艺术 18 - 80 3/24 03330 110 10:00:00 NaN NaN NaN NaN NaN NaN
12 NaN NaN NaN NaN NaN NaN 教师:John A 讲师 NaN NaN NaN NaN

这里的目标是让“Math”行的最后五列包含以“Teacher:”开头的列,“Art”行也类似,留下一个包含两行而不是四行的数据框。

最佳答案

您尝试按索引concat对齐2个df,从而生成一个具有4行而不是2行的脱节df:

right = DataFrame(bf.values [1::2], index=bf.index[1::2])

上面使用 df 中的值创建了一个新的 df,但您也获取了索引值,因为左右 df 具有相同的行数,并且您希望按列连接它们,以便索引对齐,然后您可以使用左侧 df 中的相同索引:

right = DataFrame(bf.values [1::2], index=left.index)

这将产生所需的串联 df。

关于python - 如何将数据框中的 2 行连接到新数据框中的 1 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29593784/

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