从地理坐标中删除字符串值
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
我有超过 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