[英]Append one csv by pulling value from another csv
我有一個大的CSV,其中有幾列,其中一列是地址列。 在另一個CSV中,給出了緯度和經度的地址。 我想匹配地址並拉動緯度和經度並寫入我的第一個大型csv。
我嘗試使用pandas join和merge但是它們與index列合並,我需要搜索地址csv中的地址,然后將lat-lon拉到大csv並創建兩個新列。
我發現了一些類似的問題,但那是Ruby: 這里 :我想使用Python和Pandas
Large.csv
col1, col2, col3, col4, col5, col6, addr
234, 453,34535,342,634,636, Ken street
562, 345,6753,835,864,967,St Pauls
addr.csv
addr,lat,lon
baker street, lat1, lon1
ken street, lat2,lon2
paul street, lat3, lon3
St Pauls, lat4, lon4
Ouput.csv
col1, col2, col3, col4, col5, col6, addr, lat, lon
234, 453,34535,342,634,636, Ken street,lat2,lon2
562, 345,6753,835,864,967,St Pauls,lat4,lon4
輸入文件太大而無法加載到Excel工作表中並進行Vlookup這可能是實現輸出的最簡單方法。
我正在使用python 3.x版本和Pandas的更新版本每個幫助表示感謝提前感謝
通常這樣做,修復了addr數據:
import sys
if sys.version_info[0] < 3:
from StringIO import StringIO
else:
from io import StringIO
import pandas as pd
large = StringIO('''col1, col2, col3, col4, col5, col6, addr
234, 453,34535,342,634,636, Ken street
562, 345,6753,835,864,967,St Pauls''')
addr = StringIO('''addr,lat,lon
baker street, lat1, lon1
ken street, lat2,lon2
paul street, lat3, lon3
St Pauls, lat4, lon4''')
df_large = pd.read_csv(large, sep=',')
df_large.columns = df_large.columns.str.strip()
df_large.addr = df_large.addr.apply(lambda x: x.lower().strip())
df_addr = pd.read_csv(addr, sep=',')
df_addr.addr = df_addr.addr.apply(lambda x: x.lower().strip())
df_large = pd.merge(df_large, df_addr, how='left', on='addr')
您可以對2個數據幀進行內部合並。 然后df.to_csv('Ouput.csv')將輸出數據幀寫入csv文件。
>>> df1
col1 col2 col3 col4 col5 col6 addr
0 234 453 34535 342 634 636 Ken street
1 562 345 6753 835 864 967 St Pauls
>>> df2
addr lat lon
0 baker street lat1 lon1
1 Ken street lat2 lon2
2 paul street lat3 lon3
3 St Pauls lat4 lon4
>>> df = pd.merge(df1, df2, how='inner', on='addr')
>>> df
col1 col2 col3 col4 col5 col6 addr lat lon
0 234 453 34535 342 634 636 Ken street lat2 lon2
1 562 345 6753 835 864 967 St Pauls lat4 lon4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.