簡體   English   中英

迭代 Dataframe 列

[英]Iterating over Dataframe columns

我有一個 dataframe 有一堆列看起來像這樣

City1, City2, Cord_City1
LA     LA     10,12
LA     SF     10,12
LA     SD     10,12
SF     LA     11,13
SD     SF     12,14  

我有城市 1 的所有坐標值,城市 2 中的所有城市都包含在城市 1 內

現在我想使用我已經擁有的坐標制作一列坐標 City 2

所以新表應該是這樣的(SF coord = 11,13 and SD Coord = 12,14)

City1, City2, Cord_City1, Cord_City2
LA     LA     10,12       10,12
LA     SF     10,12       11,13
LA     SD     10,12       12,14
SF     LA     11,13       10,12
SD     SF     12,14       11,13

我將如何遍歷 city2 列然后遍歷 city 1 列並從 cord_city1 返回坐標?

使用 City1 和 Cord_City1 作為字典,這樣:

key = Cord and Value = City

dict_cords = pd.Series(df.Cord_City1.values,index=df.City1).to_dict()

你得到:

{'LA': '10,12', 'SF': '11,13', 'SD': '12,14'}

創建 Cord_City2:

df['Cord_City2'] = df['City2'].map(dict_cords)

你會得到想要的結果:

    City1   City2   Cord_City1  Cord_City2
0   LA       LA      10,12      10,12
1   LA       SF      10,12      11,13
2   LA       SD      10,12      12,14
3   SF       LA      11,13      10,12
4   SD       SF      12,14      11,13

我們可以做單行

df['CordCity2'] = df.City2.map(dict(zip(df.City1,df.CordCity1)))
df
Out[223]: 
  City1 City2 CordCity1 CordCity2
0    LA    LA     10,12     10,12
1    LA    SF     10,12     11,13
2    LA    SD     10,12     12,14
3    SF    LA     11,13     10,12
4    SD    SF     12,14     11,13

這應該這樣做:

df.merge(df[['City1','Cord_City1']].drop_duplicates().rename(columns = {'Cord_City1':'Cord_City2','City1':'City2'}),
                                  left_on = 'City2', right_on = 'City2', how = 'left')


City1   City2   Cord_City1  Cord_City2
0   LA  LA  10,12   10,12
1   LA  SF  10,12   11,13
2   LA  SD  10,12   12,14
3   SF  LA  11,13   10,12
4   SD  SF  12,14   11,13

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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