Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 删除列中nan的元组_Python_Pandas - Fatal编程技术网

Python 删除列中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),

我有一个数据帧包含一个元组(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),
                              (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来做这个。谢谢!这对我来说是最好的答案。谢谢!这对我来说是最好的答案。