gpt4 book ai didi

python - 使用 pandas python 创建一个范围和总和

转载 作者:行者123 更新时间:2023-11-28 20:32:36 25 4
gpt4 key购买 nike

我有以下数据结构:

      speed            frequency_count
900.0 5
902.0 1
905.0 8
906.0 1
910.0 15
911.0 1
914.0 1
915.0 45
916.0 4

最初这个数据是 2 个列表,我试图循环并创建一个新字典但我失败了。我的预期结果是,结果也可能是一个字典。真的没关系。

      speed            frequency_count          range              sum_freq
900.0 5 900-950 15
902.0 1 900-950 15
905.0 8 900-950 15
956.0 1 900-950 15
960.0 15 950-1000 17
981.0 1 950-1000 17
944.0 1 950-1000 17

如果数据是列表格式:

   x_list = [900.0, 902.0, 905.0, 906.0, 950.0, 951.0, 954.0, 955.0, 986.0, 987.0]

y_list= [5, 1, 8, 1, 15, 1, 1, 45, 4, 5]

您如何转换为范围字典或 2 个组和列表?非常感谢我实际上也在尝试学习不同的格式操作而不是 Pandas 。

最佳答案

使用cutGroupBy.transform :

df['range'] = pd.cut(df['speed'], 
bins=[900,950,1000],
labels=['900-950','950-1000'],
include_lowest=True)
df['sum_freq'] = df.groupby('range')['frequency_count'].transform('sum')
print (df)
speed frequency_count range sum_freq
0 900.0 5 900-950 15
1 902.0 1 900-950 15
2 905.0 8 900-950 15
3 956.0 1 950-1000 17
4 960.0 15 950-1000 17
5 981.0 1 950-1000 17
6 944.0 1 900-950 15

使用来自垃圾箱的标签的更动态的解决方案:

x_list = [900.0, 902.0, 905.0, 906.0, 950.0, 951.0, 954.0, 955.0, 986.0, 987.0]
y_list= [5, 1, 8, 1, 15, 1, 1, 45, 4, 5]
df = pd.DataFrame({'speed':x_list, 'frequency_count':y_list})

bins = [900,950,1000]
labels = ['{}-{}'.format(i + 1, j) for i, j in zip(bins[:-1], bins[1:])]
labels[0] = '{}-{}'.format(bins[0], bins[1])

df['range'] = pd.cut(df['speed'], bins=bins, labels=labels, include_lowest=True)
df['sum_freq'] = df.groupby('range')['frequency_count'].transform('sum')
print (df)
speed frequency_count range sum_freq
0 900.0 5 900-950 30
1 902.0 1 900-950 30
2 905.0 8 900-950 30
3 906.0 1 900-950 30
4 950.0 15 900-950 30
5 951.0 1 951-1000 56
6 954.0 1 951-1000 56
7 955.0 45 951-1000 56
8 986.0 4 951-1000 56
9 987.0 5 951-1000 56

关于python - 使用 pandas python 创建一个范围和总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52159427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com