gpt4 book ai didi

python - 分割一个数据帧,然后将它们保存到python中的两个单独的dfs中

转载 作者:行者123 更新时间:2023-12-01 02:22:59 26 4
gpt4 key购买 nike

我有一个 pandas 数据框,其列为 id、program、name、add某些记录的 nameadd 列没有任何值(即包含 NaN 值)。我想将此数据帧分成两部分,第一个 df1 包含 id,program,name,add 下的所有值,即没有空值(仅包含每列下的值的那些记录) ;第二个 df2 仅包含 nameadd 列下没有值的记录。如果 nameadd 中的任何一个有任何值,那么它应该进入 df1,df2 应该只包含那些两列都有 NaN 值的记录。

这个问题对某些人来说可能看起来很愚蠢,但我刚刚开始使用 python,所以仍然是新手。

示例数据如下所示:

id, program,name,add
142, FOO, Sherlock, Baker street
934, FOOFOO, Harry, Hogwards
229, ABC,NaN,NaN
420, XYZ,NaN,USA
619, DEF,NaN,NaN

期望的输出应该是这样的:

df1:

id,program,name,add
142, FOO, Sherlock, Baker street
934, FOOFOO, Harry, Hogwards
420, XYZ,NaN,USA

df2:

id,program,name,add
229, ABC,NaN,NaN
619, DEF,NaN,NaN

提前致谢。

最佳答案

使用boolean indexing使用 isnull ( isna ) 创建的 mask,然后通过 DataFrame.all 检查每行的所有 True :

mask = df[['name','add']].isnull().all(axis=1)
#pandas 0.21.0+
#mask = df[['name','add']].isna().all(axis=1)
print (mask)
0 False
1 False
2 True
3 False
4 True
dtype: bool

df1 = df[~mask]
df2 = df[mask]

print (df1)
id program name add
0 142 FOO Sherlock Baker street
1 934 FOOFOO Harry Hogwards
3 420 XYZ NaN USA

print (df2)
id program name add
2 229 ABC NaN NaN
4 619 DEF NaN NaN

详细信息:

print (df[['name','add']].isnull())
name add
0 False False
1 False False
2 True True
3 True False
4 True True

关于python - 分割一个数据帧,然后将它们保存到python中的两个单独的dfs中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47766453/

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