首页 > 解决方案 > 如何获取 DataFrame 中 2 行的出现次数?

问题描述

我正在尝试创建一个网络图。我想要的输出应该有 3 列:from , to , value

import pandas as pd
data = [
    ['nyc', 'la'], 
    ['nyc', 'atl'], 
    ['nyc', 'la'], 
    ['nyc', 'la'], 
    ['nyc', 'mia'], 
    ['nyc', 'wash'], 
    ['nyc', 'la'], 
    ['dtr', 'la']
    ] 

df = pd.DataFrame(data, columns = ['from', 'to']) 

期望的结果

pd.DataFrame({
        "from": ['nyc', 'nyc', 'nyc', 'dtr'],
        "to": ['la', 'atl', 'wash', 'la'],
        "value": [4, 1, 1, 1]}) 

如何获取数据框中 2 列的出现次数?

当我这样做时,df.groupby(['from', 'to']).count()我得到一个空的数据框

>>> df.groupby(['from', 'to']).count()                                                        
Empty DataFrame
Columns: []
Index: [(dtr, la), (nyc, atl), (nyc, la), (nyc, mia), (nyc, wash)]

标签: pythonpandas

解决方案


您可以使用groupby().value_counts

df.groupby('from')['to'].value_counts().reset_index(name='value')

输出:

  from    to  value
0  dtr    la      1
1  nyc    la      4
2  nyc   atl      1
3  nyc   mia      1
4  nyc  wash      1

推荐阅读