如何计算列的唯一组合的元素频率并存储在 Dataframe 的另一列中?
How to count the frequency of elements for unique combinations of columns and store in another column in Dataframe?
我有一个 pandas 数据框,其中包含 3 列 id1
、id2
、call_freq
,其中数据的格式如下
输入:
id1 id2 call_frequency
1 1 2
1 1 3
1 1 3
1 1 3
1 1 3
1 2 5
1 2 5
1 2 4
2 1 9
2 2 6
2 2 6
2 2 7
2 2 7
2 2 7
2 2 7
输出:
call_frequency_dict 列应包含带有元素的字典字符串
在 call_frequency 中用于 id1
和 id2
的组合以及它们作为值的频率。
我尝试搜索但没有找到任何帮助。我怎样才能得到 call_frequency_dict?
我建议使用 value_counts
而不是将这些类型的数据推送到 dict
df.groupby(['id1','id2']).call_frequency.value_counts()
匹配你的输出
import collections
df.groupby(['id1','id2']).call_frequency.agg(collections.Counter).reset_index()
Out[55]:
id1 id2 call_frequency
0 1 1 {2: 1, 3: 4}
1 1 2 {5: 2, 4: 1}
2 2 1 {9: 1}
3 2 2 {6: 2, 7: 4}
好老for
循环
d = {}
for i, j, f in zip(*map(df.get, df)):
x = d.setdefault((i, j), {})
x[f] = x.get(f, 0) + 1
result = pd.Series(d).reset_index()
result.columns = df.columns
result
id1 id2 call_frequency
0 1 1 {2: 1, 3: 4}
1 1 2 {5: 2, 4: 1}
2 2 1 {9: 1}
3 2 2 {6: 2, 7: 4}
我有一个 pandas 数据框,其中包含 3 列 id1
、id2
、call_freq
,其中数据的格式如下
输入:
id1 id2 call_frequency
1 1 2
1 1 3
1 1 3
1 1 3
1 1 3
1 2 5
1 2 5
1 2 4
2 1 9
2 2 6
2 2 6
2 2 7
2 2 7
2 2 7
2 2 7
输出:
call_frequency_dict 列应包含带有元素的字典字符串
在 call_frequency 中用于 id1
和 id2
的组合以及它们作为值的频率。
我尝试搜索但没有找到任何帮助。我怎样才能得到 call_frequency_dict?
我建议使用 value_counts
而不是将这些类型的数据推送到 dict
df.groupby(['id1','id2']).call_frequency.value_counts()
匹配你的输出
import collections
df.groupby(['id1','id2']).call_frequency.agg(collections.Counter).reset_index()
Out[55]:
id1 id2 call_frequency
0 1 1 {2: 1, 3: 4}
1 1 2 {5: 2, 4: 1}
2 2 1 {9: 1}
3 2 2 {6: 2, 7: 4}
好老for
循环
d = {}
for i, j, f in zip(*map(df.get, df)):
x = d.setdefault((i, j), {})
x[f] = x.get(f, 0) + 1
result = pd.Series(d).reset_index()
result.columns = df.columns
result
id1 id2 call_frequency
0 1 1 {2: 1, 3: 4}
1 1 2 {5: 2, 4: 1}
2 2 1 {9: 1}
3 2 2 {6: 2, 7: 4}