繁体   English   中英

我想知道如何将 map 字典的值列表设为 dataframe

[英]I would like to know how to map dictionary with list of value to dataframe

我想做这个

城市
汉城
釜山
德古
汉城
汉城
釜山

进入现在具有latitudelongtitue的这个

城市 纬度 逻辑
汉城 127 50
釜山 128 51
大邱 129 52
汉城 127 50
汉城 127 50
釜山 128 51

我使用下面的代码尝试了这个

import pandas as pd

dict1 = {"Seoul":[127,50],
         "Busan":[128,51],
         "Daegu":[129,52]}

data = {'City':['Seoul', 'Busan', 'Daegu', 'Seoul','Seoul','Busan']}

test1 = pd.DataFrame(data=data)

for city, list1 in dict1.items():
    print(city," ", list1[0],list1[1])

for num, city, list1 in zip(range(7),dict1.items()):
    if test1.loc[:,"City"] == city:
        test1.loc["Latitude"] = list1[0]
        test1.loc["Longitude"] = list1[1]

但它返回错误,因为没有足够的for loop元素,需要比迭代列表长度更有效的方法祝你有美好的一天!

使用DataFrame.from_dictDataFrame.join

df1 = pd.DataFrame.from_dict(dict1, orient='index', columns=['Latitude','Longitude'])
test1 = test1.join(df1, on='City')
print (test1)
    City  Latitude  Longitude
0  Seoul       127         50
1  Busan       128         51
2  Daegu       129         52
3  Seoul       127         50
4  Seoul       127         50
5  Busan       128         51

尝试使用以下单线:

print(pd.DataFrame([[k] + v for k, v in dict1.items()], columns=['City', 'Latitude', 'Longitude']).set_index('City').loc[data['City']].reset_index())

或者正如下面提到的@jezrael,您也可以使用以下方式进行解包:

print(pd.DataFrame([(k, *v) for k, v in dict1.items()], columns=['City', 'Latitude', 'Longitude']).set_index('City').loc[data['City']].reset_index())

Output:

    City  Latitude  Longitude
0  Seoul       127         50
1  Busan       128         51
2  Daegu       129         52
3  Seoul       127         50
4  Seoul       127         50
5  Busan       128         51

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM