一直在努力思考在这里做什么,旋转和融化以及其他似乎没有成功的事情。我试图将来往/来自目的地的名称一起加入,然后重新排序组合名称,但这是一团糟
我的数据涉及从一个位置流向另一个位置,其格式为:
pd.DataFrame(columns=['from_location','to_location','flow'],data =[['a','b',1],['b','a',3]])
from_location to_location flow
0 a b 1
1 b a 3
但我的输出必须是格式:
pd.DataFrame(columns=['connection','flow','back flow','net'],data =[['a -> b',1,3,2]])
connection flow back flow net
0 a -> b 1 3 2
任何可以重新排列这样的东西的内置函数?我甚至不确定要搜索哪些关键字
答案 0 :(得分:2)
使用:
#df = df.sort_values(['from_location','to_location'])
df1 = pd.DataFrame(np.sort(df[['from_location','to_location']], axis=1),
columns=list('ab'), index=df.index)
s = df1['a'] + ' -> ' + df1['b']
df2 = df.groupby(s)['flow'].agg(['first','last']).assign(net=lambda x: x['last'] - x['first'])
print (df2)
first last net
a -> b 1 3 2
<强>解释强>:
sort_values
交换一些配对行numpy.sort
按行排序列,并将列与拆分器groupby
加入值并按agg
与first
和last
assign