我有一个数据框,看起来像这样:
创建df的代码:
dd = {'name': ["HARDIE'S MOBILE HOME PARK", 'CRESTVIEW RV PARK',
'HOMESTEAD TRAILER PARK', 'HOUSTON PARK MOBILE HOME PARK',
'HUDSON MOBILE HOME PARK', 'BEACH DRIVE MOBILE HOME PARK',
'EVANS TRAILER PARK'],
'country': ['USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA'],
'coordinates': ['30.44126118, -86.6240656099999',
'30.7190163500001, -86.5716222299999',
'30.5115772500001, -86.4628417499999',
'30.4424195300001, -86.64733076',
'30.7629176200001, -86.5928893399999', '30.44417349, -86.59951996',
'30.4427800300001, -86.62941091'],
'status':['OPEN', 'CLOSED', 'OPEN', 'OPEN', 'OPEN', 'OPEN', 'OPEN']}
df2 = pd.DataFrame(data=dd)
我想做的是创建一个具有以下结构的词典:
{'destination1': 'CRESTVIEW RV PARK; 30.7190163500001, -86.5716222299999',
'destination2': 'HOMESTEAD TRAILER PARK; 30.5115772500001, -86.4628417499999',
'destination3': 'HOUSTON PARK MOBILE HOME PARK; 30.4424195300001, -86.64733076',
'destination4': 'HUDSON MOBILE HOME PARK; 30.7629176200001, -86.5928893399999',
'destination5': 'BEACH DRIVE MOBILE HOME PARK ; 30.44417349, -86.59951996'}
如您所见,每个值必须包含名称;从第二行到最后一行的坐标。我正在使用以下代码来执行此操作:
d1 = {f"destination{k}":v + "; " + i for k in range(1, len(df1)-1) for v,i in zip(df1.name, df1.coordinates)}
然而,这是我得到的输出:
{'destination1': 'EVANS TRAILER PARK; 30.4427800300001, -86.62941091',
'destination2': 'EVANS TRAILER PARK; 30.4427800300001, -86.62941091',
'destination3': 'EVANS TRAILER PARK; 30.4427800300001, -86.62941091',
'destination4': 'EVANS TRAILER PARK; 30.4427800300001, -86.62941091',
'destination5': 'EVANS TRAILER PARK; 30.4427800300001, -86.62941091'}
它只读取数据帧的最后一行,每个键都有相同的值,但我想要的是,对于每个键,它的值必须来自数据帧中从第二行到最后一行的每一行
如果有人知道怎么做,我会非常感谢你的帮助
示例中的dict理解有两个for循环:
在这些循环中,k独立于v和i进行迭代。第二个循环有很多问题(要理解它们,只需通过操作
df1.name
、df1.coordinates
和zip(df1.name, df1.coordinates)
来了解这是如何工作的-注意df1.name是一个保留属性,它引用数据帧的名称,而不是列“name”)您真正想要的是在df1中为每一行循环多个元素。为此,只需使用第一个循环,但在构建值时从df访问所需的元素:
有关更多信息,请查看this FullStack Python guide's理解部分
或者,(最好)使用熊猫
如果此时您真的需要一个字典,您可以使用
d1 = d1.to_dict()
将该系列转换为字典你可以像这样列举拉链
你不必做dict理解就能得到这个结果,如果你能像这样在pandas数据框中做几列,你就能得到这个结果
相关问题 更多 >
编程相关推荐