如何在DataFrame的每一行上添加两列的value_counts?

时间:2018-12-03 19:49:58

标签: python pandas networkx

我有这个DataFrame,是我从另一个DataFrame中获取的。它具有自行车旅行的起点站和终点站。我计划使用networkx和from_pandas_dataframe()将它们添加到网络中。我只需要为砝码制作另一个系列/列。

我希望每一行都为每个起始站和结束站找到value_counts,并将它们作为权重相加。

因此,对于第一个条目,我将找到桩号3058和3082的出现次数,将其添加并将其放在权重列上,例如this

编辑:根据要求添加代码:

df = data[['start_station','end_station']]
a = df.start_station.value_counts()
b = df.end_station.value_counts()
pd.options.display.max_rows=300
c = a + b

这是数据集:https://ufile.io/cxbov

1 个答案:

答案 0 :(得分:1)

您可以这样做:

df = pd.read_csv('metro.csv')

s = df[['start_station','end_station']].apply(pd.value_counts).sum(1)

df_out = df[['start_station','end_station']].assign(weight = df['start_station'].map(s) + df['end_station'].map(s))

print(df_out.head())

输出:

   start_station  end_station  weight
0           3058         3082    6248
1           3058         3082    6248
2           4147         4174     496
3           4157         4162     903
4           3013         3013     100