拆分数据框,然后在python中将它们保存到两个单独的dfs中

时间:2017-12-12 06:22:02

标签: python python-3.x pandas dataframe

我有一个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

提前致谢。

1 个答案:

答案 0 :(得分:2)

boolean indexingmask isnull创建的True一起使用,然后按isna检查每行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

详情:

r = requests.post(url = API_ENDPOINT, headers = headers, data = data)
print(r.text)
print(type(r.text))
print(r.text[2])