Python 删除列中nan的元组
我有一个数据帧包含一个元组(lat,lon),但有一些行包含一个元组nan。如何删除或检测这些 例如:Python 删除列中nan的元组,python,pandas,Python,Pandas,我有一个数据帧包含一个元组(lat,lon),但有一些行包含一个元组nan。如何删除或检测这些 例如: import pandas as pd import numpy as np df = pd.DataFrame(data={'location': [1, 2, 3], 'coor': [(14.48847, 103.161477), (14.970084, 103.062853),
import pandas as pd
import numpy as np
df = pd.DataFrame(data={'location': [1, 2, 3],
'coor': [(14.48847, 103.161477),
(14.970084, 103.062853),
(np.nan, np.nan)]})
location coor
0 A (14.48847, 103.161477)
1 B (14.970084, 103.062853)
2 C (nan, nan)
我试过了
df.isna()
location coor
0 False False
1 False False
2 False False
df.dropna()
location coor
0 A (14.48847, 103.161477)
1 B (14.970084, 103.062853)
2 C (nan, nan)
但这根本不起作用。我应该把一个元组分成两列,还是有办法处理它们?任何帮助或指导都将不胜感激。您可以尝试使用lambda函数进行过滤
df[~df.coor.apply(lambda x: np.isnan(x[0]) & np.isnan(x[1]))]
# prints
location coor
0 1 (14.48847, 103.161477)
1 2 (14.970084, 103.062853)
您可以尝试使用lambda函数进行过滤
df[~df.coor.apply(lambda x: np.isnan(x[0]) & np.isnan(x[1]))]
# prints
location coor
0 1 (14.48847, 103.161477)
1 2 (14.970084, 103.062853)
没有应用程序将加快速度
df[pd.DataFrame(df.coor.tolist()).notna().all(1)]
Out[361]:
coor location
0 (14.48847, 103.161477) 1
1 (14.970084, 103.062853) 2
没有应用程序将加快速度
df[pd.DataFrame(df.coor.tolist()).notna().all(1)]
Out[361]:
coor location
0 (14.48847, 103.161477) 1
1 (14.970084, 103.062853) 2
谢谢我忘了我可以用apply来做这个。谢谢!我忘了我可以用apply来做这个。谢谢!这对我来说是最好的答案。谢谢!这对我来说是最好的答案。