Python/Pandas:将单个列中的美元值拆分为单独的列

2024-09-30 12:26:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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())

我希望以1万美元的增量迭代执行此操作,并为每个增量创建一个新的列/索引。以下代码是我尝试过但失败的代码:

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]]

研究告诉我应该使用字典或序列来实现这一点,但我不确定如何创建循环。非常感谢您的帮助


Tags: and代码pandas排序valuebetween解决方案增量
1条回答
网友
1楼 · 发布于 2024-09-30 12:26:33

使用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))是定义固定大小间隔数组的一种简单方便的方法,然后我们使用它来剪切数据帧。在我的示例中,它是数组:

array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])

您只需修改此部分,即希望用作间隔的值的范围,例如(10000.0,5000000.0,10000.0)

相关问题 更多 >

    热门问题