![](/img/trans.png)
[英]How to use Pandas stylers for coloring an entire row based on a given column?
[英]Delete entire row based on column using pandas
我有以下形式的數據集(csv):
ship_id,speed,LON,LAT,
00x1,7.4,2.17105,41.31353
00x1,7.4,1.935983,41.04712
00x1,7.4,-5.381285,36.11647
我有一個包含以下幾點的經緯度的列表:
for i in range(len(array_points2)):
print array_points2[i].lat, array_points2[i].lon
輸出:
1.935983 41.04712
-0.9617717 37.51845
14.70076 35.76273
我想遍歷列表中的元素,如果緯度和手數與任何行的LON,LAT相同,則此行將被刪除。
到目前為止,我的代碼不起作用:
df = pd.read_csv('/home/repos/master/testdat.csv')
for i in range(len(array_points2)):
df[df.LAT != array_points2[i].lat]
df.to_csv('/home/antonis/master/testdat_new.csv', sep='\t')'
另外,我必須將結果寫入另一個文件嗎? 刪除不正確嗎?
預期的輸出結果是:
ship_id,speed,LON,LAT,
00x1,7.4,2.17105,41.31353
00x1,7.4,-5.381285,36.11647
您可以通過以下方式做到這一點,首先將點數組轉換為列表列表:
list_lon_lat =[]
for point in array_points2:
list_lon_lat.append([point.lon, point.lat])
然后為字典列表構建一個數據框並重命名列,以便它們與原始數據框匹配:
df_lonlat = pd.DataFrame(list_lon_lat, columns=['LON','LAT'])
最后,從原始數據框中刪除原始數據與lonlat數據框的交集。
df.drop(df.merge(df_lonlat).index, inplace=True)
您可以嘗試這種方法。
拳頭將列表轉換為數據框。
dfy = pd.DataFrame(array_points2, columns=['ship_id','speed','LON','LAT'])
然后,刪除原始數據幀的LON或LAT與列表(現在是數據幀)的LON或LAT相同的行。
df = df.drop(df[((df.LON == dfy.LON) | (df.LAT == dfy.LAT))].index)
輸出將是-
ship_id,speed,LON,LAT,
00x1,7.4,2.17105,41.31353
00x1,7.4,-5.381285,36.11647
然后使用以下代碼將Dataframe df保存為csv文件-
df.to_csv(file_name, sep=',', encoding='utf-8')
希望這個答案能解決您的問題!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.