Python / Pandas:在单列中拆分美元值以分隔各列

问题描述 投票:0回答:1

我是Python / Pandas的新手,我认为我要解决的问题非常简单,但是我似乎无法将头围在解决方案上。

我已加载CSV文件,删除了不需要的列,并对数据进行了排序。现在,我正在基于报价的“值”是否在某个范围内创建一个新表。我已经在这里成功排序了一些值:

# Sums values between $0 and $10k
Q_Summ10 = Q_Summ_W[(Q_Summ_W['Value'] > 0.0) & (Q_Summ_W['Value'] <= 10000.0)]
print(Q_Summ10)
print(Q_Summ10['Value'].sum())

# Sum values between $10k and $20k
Q_Summ20 = Q_Summ_W[(Q_Summ_W['Value'] > 10000.0) & (Q_Summ_W['Value'] <= 20000.0)]
print(Q_Summ20)
print(Q_Summ20['Value'].sum())

我想以$ 10k的增量进行迭代,并为每个增量创建一个新的列/索引。以下代码是我尝试过并失败的代码:

for i in Q_Summ_W['Value'](10000.0,5000000.0,10000.0):
         sep = pd.DataFrame[('Summ{}'.format(i)):[Q_Summ_W[Q_Summ_W['Value'] > (i - i) & 
               Q_Summ_W['Value'] <= i]]

研究告诉我,我应该为此使用字典或序列,但是我不确定如何使用循环创建它们。非常感谢您的帮助!

python pandas sorting iteration
1个回答
0
投票

[使用pd.cut将数据帧按时间间隔划分,​​然后使用df.groupby将值按时间间隔分组更容易。然后,只需对groupby对象使用sum()方法即可对每个间隔中的所有值求和。

您没有提供任何示例,因此下面的代码对具有Value列的数据帧起作用,该列包含从0到1的随机值,然后我以0.1的间隔进行分组:

import pandas as pd
import numpy as np

np.random.seed(42)  # for reproductibility
df = df = pd.DataFrame({'Value': np.random.random(size=100)})
print(df)
# output:
#
#            Value
# 0   0.374540
# 1   0.950714
# 2   0.731994
# 3   0.598658
# 4   0.156019
# ..       ...
# 95  0.493796
# 96  0.522733
# 97  0.427541
# 98  0.025419
# 99  0.107891
#
# [100 rows x 1 columns]

grouped_df = df.groupby(pd.cut(df['Value'], np.arange(0, 1, 0.1))).sum()
print(grouped_df)
# output:
#
#                Value
# Value               
# (0.0, 0.1]  0.699045
# (0.1, 0.2]  2.372805
# (0.2, 0.3]  1.606776
# (0.3, 0.4]  4.057759
# (0.4, 0.5]  3.216896
# (0.5, 0.6]  5.521448
# (0.6, 0.7]  4.428124
# (0.7, 0.8]  8.954358
# (0.8, 0.9]  7.598556

只需将np.arange(0, 1, 0.1))更改为想要用作间隔的所需值范围,例如(10000.0,5000000.0,10000.0)

© www.soinside.com 2019 - 2024. All rights reserved.