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)