gpt4 book ai didi

python - 从单个 df 派生多个 df,使得每个 df 没有 NaN 值

转载 作者:行者123 更新时间:2023-12-03 18:33:01 24 4
gpt4 key购买 nike

我想转换此表

0   thg   John     3.0
1 thg James 4.0
2 mol NaN 5.0
3 mol NaN NaN
4 lob NaN NaN

在下表中

df1
movie name rating
0 thg John 3.0
1 thg James 4.0

df2
movie rating
2 mol 5.0

df3
movie
3 mol
4 lob

每个数据帧没有 Nan 值,还告诉方法我是否需要相对于空白值而不是 Nan 进行分隔。

最佳答案

我认为新目标 DataFrame 的启动不应该发生仅当 数量NaN 值发生变化时(与前一行),而且当这个数字相同时,但是NaN 值位于不同的列中。

所以我提出以下公式:

dfs = [g.dropna(how='all',axis=1) for _,g in
df.groupby(df.isna().ne(df.isna().shift()).any(axis=1).cumsum())]

您可以打印正在运行的部分 DataFrame(任意数量):

n = 0
for grp in dfs:
print(f'\ndf No {n}:\n{grp}')
n += 1

当您添加时,我的解决方案相对于其他解决方案的优势就变得显而易见到源 DataFrame 的另一行包含:

5   NaN    NaN    3.0

它还包含1非空值(如前两行)。另一种解决方案将把所有这些行视为一个部分 DataFrame包含:

  movie  rating
3 mol NaN
4 lob NaN
5 NaN 3.0

如您所见,具有 NaN 值,而我的解决方案将这些行分成 2 个独立的 DataFrame,没有任何 NaN

关于python - 从单个 df 派生多个 df,使得每个 df 没有 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61073320/

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