【发布时间】:2022-01-10 08:05:42
【问题描述】:
我有一个大型数据集,它是一个巨大的表,实际上应该是许多表。标题隐藏在子集的行中。
我的目标是将这些标题拉到一个新列中,以便我可以按该列过滤以获得我想要的数据(一次一个标题)。我为此创建了一个空的标题列。 SCORE 列中始终存在一系列 3 个 NaN 值,其中该系列中 NAME 列中的第一个值是我想要的 HEADER。所以我在考虑可以利用这种关系。
当前的 Pandas 数据框具有以下结构:
s = '''HEADER,NAME,SCORE
NaN,Header 1,NaN
NaN,Random Junk,NaN
NaN,Random Junk,NaN
NaN,Ed,98
NaN,Gary,78
NaN,Floyd,89
NaN,Header 2,NaN
NaN,Random Junk,NaN
NaN,Random Junk,NaN
NaN,Mary,96
NaN,Steve,78'''
import pandas as pd
from io import StringIO
df = pd.read_csv(StringIO(s))
HEADER NAME SCORE
NaN Header 1 NaN
NaN Random Junk NaN
NaN Random Junk NaN
NaN Ed 98
NaN Gary 78
NaN Floyd 89
... ... ...
NaN Header 2 NaN
NaN Random Junk NaN
NaN Random Junk NaN
NaN Mary 96
NaN Steve 78
我想要这个:
HEADER NAME SCORE
Header 1 Header 1 NaN
Header 1 Random Junk NaN
Header 1 Random Junk NaN
Header 1 Ed 98
Header 1 Gary 78
Header 1 Floyd 89
... ... ...
Header 2 Header 2 NaN
Header 2 Random Junk NaN
Header 2 Random Junk NaN
Header 2 Mary 96
Header 2 Steve 78
这样我就可以删除 NaN 行并获得我真正想要的内容:
HEADER NAME SCORE
Header 1 Ed 98
Header 1 Gary 78
Header 1 Floyd 89
... ... ...
Header 2 Mary 96
Header 2 Steve 78
经过大量搜索,我无法弄清楚如何进行这种条件编辑。非常感谢您提供的任何帮助。
【问题讨论】:
-
您的实际数据是否包含 NaN?例如:
98 nan 89? -
是的,就像我在上面的数据框中写的那样。在源材料中没有任何内容(空值)。它是使用 read_html 从网站上抓取的,这是由此产生的数据框。
-
埃德·加里·弗洛伊德的身价可以是nan吗?
-
不,我已从该列中删除了所有 NaN 值。
标签: python pandas dataframe nan