我有两个数据帧,第一个是基数,第二个是子集。我希望基数决定子集的排序。
unit1 = ["Tom", "Dick", "Harry", "Alice", "Bob", "Carol"]
unit2 = ["Harry", "Alice", "Tom", "Carol"]
count1 = [6000, 5554, 4346, 3848, 2210, 1112]
count2 = [300, 25, 534, 8480]
df1 = pd.DataFrame(count1, index=unit1)
df2 = pd.DataFrame(count2, index=unit2)
dict_of_ward_totals = {}
for row in zip(df1.index, df1[0]):
t1 = [df2[df2.index.isin([row[0]])]]
if not t1[0].empty:
dict_of_ward_totals.update({row[0] : int(t1[0].values)})
stake_month = pd.DataFrame.from_dict(dict_of_ward_totals, orient='index')
我的目标是将df2分类为Tom,Harry,Alice,Carol
上述尝试尝试通过DF1,然后使用生成的dict创建一个新的数据帧,它不起作用,因为它给出了DF2的索引值
答案 0 :(得分:1)
In [132]: df2.loc[df1[0].argsort().index].dropna()
Out[132]:
0
Tom 534.0
Harry 300.0
Alice 25.0
Carol 8480.0
应该这样做。 argsort
将返回排序df1
的位置。
In [133]: df1[0].argsort()
Out[133]:
Tom 5
Dick 4
Harry 3
Alice 2
Bob 1
Carol 0
Name: 0, dtype: int64
我们使用索引来切片df2
。这引入了NaNs,我们放弃了。