我有一个pandas数据框,其列为id,program,name,add
某些记录没有name
和add
列的任何值(即包含 NaN 值)。
我想将这个数据帧拆分为两个,使得第一个df1包含id,program,name,add
下的所有值,即没有空值(只有那些包含每列下的值的记录);第二个df2仅包含那些name
和add
列下没有值的记录。如果name
和add
中的任何一个都有任何值,那么它应该进入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
提前致谢。
答案 0 :(得分:2)
将boolean indexing
与mask
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])