通过 pandas 数据框中的单独计数列聚合重复的起始值和目标值来创建新数据框
Create a new dataframe by aggregating repeated origin and destination values by a separate count column in a pandas dataframe
我无法分析 pandas 数据框中的起点-终点值,该数据框包含 origin/destination 列和这些列的频率计数列。我想将其转换为一个数据框,其中包含离开和进入的人数:
初始:
Origin Destination Count
A B 7
A C 1
B A 1
B C 4
C A 3
C B 10
例如,这个简化的数据框有 7 个从 A 离开到 B,1 个从 A 到 C,所以总体离开 A 的位置是 8,进入 A 的位置是 4(B - A 是 1,C - A 是3) 等等。新数据框看起来像这样。
目标:
Place Entering Leaving
A 4 8
B 17 5
C 5 13
我已经尝试了多种技术,例如 .groupby() 但尚未创建我想要的数据框。我如何处理 origin/destination 列中的重复值并将它们分配给新的数据框,其聚合值仅为离开和进入的计数?
谢谢!
使用双 groupby
+ concat
:
a = df.groupby('Destination')['Count'].sum()
b = df.groupby('Origin')['Count'].sum()
df = pd.concat([a,b], axis=1, keys=('Entering','Leaving')).rename_axis('Place').reset_index()
print (df)
Place Entering Leaving
0 A 4 8
1 B 17 5
2 C 5 13
pivot_table
然后做 sum
df=pd.pivot_table(df,index='Origin',columns='Destination',values='Count',aggfunc=sum)
pd.concat([df.sum(0),df.sum(1)],1)
Out[428]:
0 1
A 4.0 8.0
B 17.0 5.0
C 5.0 13.0
我无法分析 pandas 数据框中的起点-终点值,该数据框包含 origin/destination 列和这些列的频率计数列。我想将其转换为一个数据框,其中包含离开和进入的人数:
初始:
Origin Destination Count
A B 7
A C 1
B A 1
B C 4
C A 3
C B 10
例如,这个简化的数据框有 7 个从 A 离开到 B,1 个从 A 到 C,所以总体离开 A 的位置是 8,进入 A 的位置是 4(B - A 是 1,C - A 是3) 等等。新数据框看起来像这样。
目标:
Place Entering Leaving
A 4 8
B 17 5
C 5 13
我已经尝试了多种技术,例如 .groupby() 但尚未创建我想要的数据框。我如何处理 origin/destination 列中的重复值并将它们分配给新的数据框,其聚合值仅为离开和进入的计数?
谢谢!
使用双 groupby
+ concat
:
a = df.groupby('Destination')['Count'].sum()
b = df.groupby('Origin')['Count'].sum()
df = pd.concat([a,b], axis=1, keys=('Entering','Leaving')).rename_axis('Place').reset_index()
print (df)
Place Entering Leaving
0 A 4 8
1 B 17 5
2 C 5 13
pivot_table
然后做 sum
df=pd.pivot_table(df,index='Origin',columns='Destination',values='Count',aggfunc=sum)
pd.concat([df.sum(0),df.sum(1)],1)
Out[428]:
0 1
A 4.0 8.0
B 17.0 5.0
C 5.0 13.0