Python 创建多个列计数的数据帧
我有一个熊猫数据框,看起来像这样:Python 创建多个列计数的数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框,看起来像这样: From To -------------------- DC Boston DC Boston Boston DC Atlanta LA LA Atlanta City From To ----------------------- DC 2 1 Boston 1 2 Atlanta
From To
--------------------
DC Boston
DC Boston
Boston DC
Atlanta LA
LA Atlanta
City From To
-----------------------
DC 2 1
Boston 1 2
Atlanta 1 1
LA 1 1
我想创建一个如下所示的数据帧:
From To
--------------------
DC Boston
DC Boston
Boston DC
Atlanta LA
LA Atlanta
City From To
-----------------------
DC 2 1
Boston 1 2
Atlanta 1 1
LA 1 1
每行包含城市在“发件人”和“收件人”列中的次数
在Python中创建这样一个数据帧的最干净的方法是什么?关于
value\u counts
:
# use df[['From','To']].apply(...) if you have other columns
df.apply(lambda x: x.value_counts())
输出:
From To
Atlanta 1 1
Boston 1 2
DC 2 1
LA 1 1
更新:另一个稍微快一点的选项:
df.stack().groupby(level=1).value_counts().unstack(0)
测试:
%timeit -n 100 (df.apply(lambda x: x.value_counts()))
# 3.7 ms ± 71.7 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit -n 100 df.stack().groupby(level=1).value_counts().unstack(0)
# 2.98 ms ± 87.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)