Python 3.x 如何获取具有空值的最后一行
我有一张桌子:Python 3.x 如何获取具有空值的最后一行,python-3.x,pandas,Python 3.x,Pandas,我有一张桌子: a b c 1 11 21 2 12 22 3 3 3 NaN 14 24 NaN 15 NaN 4 4 4 5 15 25 6 6 6 7 17 27 我想删除列a中最后一行空值之前的所有行。我想要的输出是: a b c NaN
a b c
1 11 21
2 12 22
3 3 3
NaN 14 24
NaN 15 NaN
4 4 4
5 15 25
6 6 6
7 17 27
我想删除列a
中最后一行空值之前的所有行。我想要的输出是:
a b c
NaN 15 NaN
4 4 4
5 15 25
6 6 6
7 17 27
我找不到更好的解决方案,但是first\u valid\u index
和last\u valid\u index
。我想我不需要这个
奖金 如果一行中的所有值都相同,我还想在dataframe中添加一个新列。以下行应具有相同的值:
new a b c
NaN NaN 15 NaN
4 4 4 4
4 5 15 25
6 6 6 6
6 7 17 27
谢谢大家! 查找包含
NaN
的行:
nanrows = df['a'].isnull()
查找其中最后一个的索引:
nanmax = df[nanrows].index.max()
进行切片:
df.iloc[nanmax:]
# a b c
#4 NaN 15 NaN
#5 4.0 4 4.0
#6 5.0 15 25.0
#7 6.0 6 6.0
#8 7.0 17 27.0
查找包含
NaN
的行:
nanrows = df['a'].isnull()
查找其中最后一个的索引:
nanmax = df[nanrows].index.max()
进行切片:
df.iloc[nanmax:]
# a b c
#4 NaN 15 NaN
#5 4.0 4 4.0
#6 5.0 15 25.0
#7 6.0 6 6.0
#8 7.0 17 27.0
将
isna
与idxmax
一起使用:
new_df = df.iloc[df["a"].isna().idxmax()+1:]
输出:
a b c
4 NaN 15 NaN
5 4.0 4 4.0
6 5.0 15 25.0
7 6.0 6 6.0
8 7.0 17 27.0
然后使用pandas.Series.where和nunique
:
new_df["new"] = new_df["a"].where(new_df.nunique(axis=1).eq(1)).ffill()
print(new_df)
最终输出:
a b c new
4 NaN 15 NaN NaN
5 4.0 4 4.0 4.0
6 5.0 15 25.0 4.0
7 6.0 6 6.0 6.0
8 7.0 17 27.0 6.0
将
isna
与idxmax
一起使用:
new_df = df.iloc[df["a"].isna().idxmax()+1:]
输出:
a b c
4 NaN 15 NaN
5 4.0 4 4.0
6 5.0 15 25.0
7 6.0 6 6.0
8 7.0 17 27.0
然后使用pandas.Series.where和nunique
:
new_df["new"] = new_df["a"].where(new_df.nunique(axis=1).eq(1)).ffill()
print(new_df)
最终输出:
a b c new
4 NaN 15 NaN NaN
5 4.0 4 4.0 4.0
6 5.0 15 25.0 4.0
7 6.0 6 6.0 6.0
8 7.0 17 27.0 6.0
(1) 您的“表”是数据帧还是其他什么?(2) Python中没有
null
。它是None
还是nan
或其他什么?我用nan代替null编辑了这个问题。如果您发现至少有一行具有相同的值,请再添加一列?列将有哪些值?如果我找到相同的值,新列也将存储相同的值。在所有列(1)中找到具有相同值的另一行之前,还将存储上一列中的值的行是“表”还是数据帧?(2) Python中没有null
。它是None
还是nan
或其他什么?我用nan代替null编辑了这个问题。如果您发现至少有一行具有相同的值,请再添加一列?列将有哪些值?如果我找到相同的值,新列也将存储相同的值。在所有列中找到具有相同值的另一行之前,还将存储上一列中的值的行。当我找到包含任何NaN的行时,是否必须提及列名?因为我想在a专栏中找到南斯,但我忽略了这一部分。是的,你必须这样做。查看更新的答案。当我找到包含任何NAN的行时,是否必须提及列名?因为我想在a专栏中找到南斯,但我忽略了这一部分。是的,你必须这样做。请参阅更新的答案。