我有2个不同行的数据帧,dF1=(1098 x 2列)和df2=(1331 x2)例如:
df1
lat-2 long-2
R1 10.612811 46.265142
R2 10.604078 45.896510
R3 10.610205 45.727291
R4 10.606051 45.772968
R5 10.596646 46.517013
df2
lat-1 long-1
G1 10.604065 45.896533
G2 10.612811 46.265142
G3 10.606051 45.772968
G4 10.610205 45.727291
G5 10.606747 44.772287
G6 10.619976 45.847164
G7 10.607682 45.477258
G8 10.784809 44.769609
在pandas数据帧中,借助于获取彼此之间的最近点,我计算df1的每一行和df2的所有行之间的欧几里德距离,因此新的_df具有(1089 x 1331)。新德里
G1 G2 G3 G4 G5 G6 G7 G8
R1 0.368713 0.000000 0.492220 0.537857 1.492867 0.418039 0.787901 1.505391
R2 0.000026 0.368735 0.123558 0.169330 1.124226 0.051844 0.419267 1.141302
R3 0.169353 0.537857 0.045865 0.000000 0.955010 0.120271 0.250046 0.973469
R4 0.123581 0.492220 0.000000 0.045865 1.000681 0.075491 0.295714 1.019158
R5 0.620524 0.252389 0.744104 0.789838 1.744755 0.670255 1.039814 1.757506
我想要这样的结果:
close
R1 [G2,G1,G6,G3,G5,G4,G7,G8]
R2 [G1, G6, ,,......]
R3 [G4,...]
R4 [G3,....]
R5 [G2,G5,...]
R6 [G2,G3,...]
R7 [G4,...]
换句话说,我想让每一行新的_df按升序对列的值进行排序,最后返回我想要的结果。
我不能在熊猫数据帧中使用互相获取最近点的代码,我试着这样写:
def Closest(df):
d=defaultdict(list)
for x in (df.index):
y=df.loc[str(x)].copy()
M=y.tolist()
Q=M.sort_val(ascending=True)
p=Q.index
d[x].appand(p)
return (d)
我的想法是:
h=new_df.loc["R1"].copy()
h:
G1 0.368713
G2 0.000000
G3 0.492220
G4 0.537857
G5 1.492867
G6 0.418039
G7 0.787901
G8 1.505391
Name: R3, dtype: float64
k=h.sort_values(ascending=True)
k.index
d={}
d['R']=k.index
所以我想创建一个字典,其中包含索引R作为键,有序G的列表作为值。最后,我可以从这个字典生成一个数据帧。但当我编写此函数时,它正在发送(“'float'对象没有属性'sort_val','occurrent at index G1')或'float'对象不可编辑。
我是一名新程序员(初学者),
我如何纠正我的功能以达到我的目标,或者如果我的想法完全错误,我如何获得结果?
您可以为您的df应用排名
,然后按排名顺序对列名排序,并创建一个新的系列
lst=[ [z for z,p in sorted(zip(df.columns.values.tolist(),x),key=lambda y: y[1])] for x in df.apply(lambda x : x.rank(),1).values.tolist()]
pd.Series(data=lst,index=df.index)
Out[1531]:
R1 [G2, G1, G6, G3, G4, G7, G5, G8]
R2 [G1, G6, G3, G4, G2, G7, G5, G8]
R3 [G4, G3, G6, G1, G7, G2, G5, G8]
R4 [G3, G4, G6, G1, G7, G2, G5, G8]
R5 [G2, G1, G6, G3, G4, G7, G5, G8]
dtype: object
我有一个像这样的数据框- 我有一个这样的列表- 现在,我想根据列名列表对数据框进行排序 因此,新的数据框将有列名称-
假设我有一个包含列,和的数据帧,我想按升序按列排序,按降序按列排序,如何我要这么做吗?
我目前有一个应用程序,可以显示1.5公里半径内附近的医院,它看起来是这样的: 我遇到的麻烦是,我不知道如何根据他们从最低到最高的计算距离来排序卡片。 我创建了一个来存储计算的距离列表,并用对其进行排序。 我如何确保小部件将遵循排序的距离值的顺序?
问题内容: 我有这样的价值观: 我想按升序对每个值进行排序。我不想在集合之间进行排序,而是在每个集合中进行排序。 问题答案: 来自评论: 我想对每个集合进行排序。 这很容易。对于任何集合(或其他任何可迭代的对象),以排序顺序返回的元素列表: 请注意,这是给您一个,而不是一个。这是因为在数学和几乎每种编程语言中,集合的全部要点*都是无序的:集合和是同一集合。 您可能真的不想将这些元素排序为字符串,而
我有一个pandas数据帧(df),我需要根据列值的计数对其进行排序。列的值是字符串。 例如,目标列的值为橙色、苹果色、香蕉色和桃色。单个计数(df['fruit'].value_counts())为: 香蕉2678 桃2250 橙色1765 苹果1691 结果我需要根据这些计数对初始数据帧(包括所有列等)进行排序。因此,在前2678行中,水果列中的值应为香蕉等
编辑:对于同样的问题,我尝试编写一个比较器。但它不起作用