我是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]]
研究告诉我,我应该为此使用字典或序列,但是我不确定如何使用循环创建它们。非常感谢您的帮助!
[使用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)
。