从地理坐标中删除字符串值

Removed string values from geo cordinates

我有超过 20 亿行和 16 列的海量数据集。

两列是纬度和经度,一列是日期时间。

由于数据是原始数据,我正在尝试对其进行清理。在此过程中,我遇到了一些包含日期时间的纬度经度行,这些行被视为 string,纬度和经度为 float

我正在使用 re 进行其他预处理,但在这里我做不到。

我想删除整行,这两列中除了纬度和经度之外还有其他内容。

我正在 python 和 pandas 中寻找一些简单的解决方案,它只会删除那些行并保持数据集的其余部分不变。

编辑:输入迷你版已分享here。最后两列是 latitude & Longitude,之前的一列是 datetime 第 10 行,这是我提到的错误。

感谢帮助..谢谢!

如果所有值都是 strings:

则有差异
df = pd.DataFrame({'lat':[10,20,'d'], 'lon':[4,'hh', 7]}).astype(str)

mask = pd.to_numeric(df['lat'], errors='coerce').notnull() & 
       pd.to_numeric(df['lon'], errors='coerce').notnull()

df = df[mask]
print (df)
  lat lon
0  10   4

或者混合值 - 一些是数字,一些是字符串:

df = pd.DataFrame({'lat':[10,20,'d'], 'lon':[4,'hh', 7]})

mask = (df['lat'].apply(type) != str) & (df['lon'].apply(type) != str)

df = df[mask]
print (df)
  lat lon
0  10   4

编辑:

df = pd.read_csv('twt_mini_stack.csv')
#print (df)

mask = pd.to_numeric(df['Lat'], errors='coerce').notnull() &  \
       pd.to_numeric(df['Long'], errors='coerce').notnull()

df = df[mask]
print (df[['Tweeted Datetime','Lat','Long']])
        Tweeted Datetime       Lat      Long
0   3:59 PM - 1 Jan 2016  35.68501  139.7514
1   3:59 PM - 1 Jan 2016  35.68501  139.7514
2   3:59 PM - 1 Jan 2016  35.68501  139.7514
3   3:59 PM - 1 Jan 2016  35.68501  139.7514
4   3:59 PM - 1 Jan 2016  35.68501  139.7514
5   3:59 PM - 1 Jan 2016  35.68501  139.7514
6   3:59 PM - 1 Jan 2016  35.68501  139.7514
7   3:59 PM - 1 Jan 2016  35.68501  139.7514
9   3:58 PM - 1 Jan 2016  35.68501  139.7514
10  3:58 PM - 1 Jan 2016  35.68501  139.7514
11  3:58 PM - 1 Jan 2016  35.68501  139.7514
12  3:58 PM - 1 Jan 2016  35.68501  139.7514
13  3:58 PM - 1 Jan 2016  35.68501  139.7514