簡體   English   中英

通過從另一個csv中提取值來附加一個csv

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM