熊猫创建多个列数的DataFrame

时间:2019-10-02 20:19:10

标签: python pandas dataframe

我有一个看起来像这样的Pandas DataFrame:

From         To
--------------------
DC           Boston
DC           Boston
Boston       DC
Atlanta      LA
LA           Atlanta

我想创建一个看起来像这样的DataFrame:

City       From      To
-----------------------
DC         2         1
Boston     1         2
Atlanta    1         1
LA         1         1

每行在[发件人]和[发件人]列中包含城市的次数。

在Python中创建此类DataFrame的最干净方法是什么?

1 个答案:

答案 0 :(得分:1)

value_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)