python - 如何根据python中数据框中其他列的值/计数计算数据框中列的值?
问题描述
我有一个 pandas 数据框,其中包含一整月的一天 24 小时的数据,其中包含以下字段:
(df1):- date,hour,mid,rid,percentage,total
我需要使用此数据框创建第二个数据框,其中包含以下字段:
(df2) :- date, hour,mid,rid,hour_total
这里 hour_total 的计算如下:
如果对于数据帧 1 中的 (date,mid,rid) 的组合,df1.percentage 为 0 的记录数为 24,则 hour_total = df1.total/24 else hour_total = (df1.percentage /100) * total
例如,如果数据帧 1 如下所示:-(日期 mid,rid 组的记录计数,其中 perc 为 0 为 24)
date,hour,mid,rid,perc,total
2019-10-31,0,2, 0,0,3170.87
2019-10-31,1,2,0,0,3170.87
2019-10-31,2,2,0,0,3170.87
2019-10-31,3,2,0,0,3170.87
2019-10-31,4,2,0,0,3170.87
.
.
2019-10-31,23,2,0,0,3170.87
那么数据框2应该是:(hour_total = df1.total/24)
date,hour,mid,rid,hour_total
2019-10-31,0,2,0,132.12
2019-10-31,1,4,0,132.12
2019-10-31,2,13,0,132.12
2019-10-31,3,17,0,132.12
2019-10-31,4,7,0,132.12
.
.
2019-10-31,23,27,0,132.12
我怎样才能做到这一点?
解决方案
您可以尝试应用功能
例如
a = np.random.randint(100,200, size=5)
b = np.random.randint(100,200, size=5)
c = [datetime.now() for x in range(100) if x%20 == 0]
df1 = pd.DataFrame({'Time' : c, "A" : a, "B" : b})
上面的数据框看起来像这样
Time A B
0 2019-10-24 20:37:38.907058 158 190
1 2019-10-24 20:37:38.907058 161 127
2 2019-10-24 20:37:38.908056 100 100
3 2019-10-24 20:37:38.908056 163 164
4 2019-10-24 20:37:38.908056 121 159
现在,如果我们要计算一个新列,其值取决于列的其他值。您可以定义一个执行此计算的函数。
def func(x):
t = x[0] # time
a = x[1] # A
b = x[2] # B
return a+b
并将此功能应用于数据框
df1["new_col"] = df1.apply(func, axis=1)
这将产生以下结果。
Time A B new_col
0 2019-10-24 20:37:38.907058 158 190 348
1 2019-10-24 20:37:38.907058 161 127 288
2 2019-10-24 20:37:38.908056 100 100 200
3 2019-10-24 20:37:38.908056 163 164 327
4 2019-10-24 20:37:38.908056 121 159 280
推荐阅读
- javascript - 带有 settimeout 的异步 javascript 承诺调用
- react-native - React Native:点击屏幕背景时抽屉不会关闭
- github - 如何删除除 master 之外的所有 Git 远程分支?
- azure-storage - Azure Function App 中用户计算机上给定路径的图像流/字节数组
- qt - 如何更改 Qt VitrualKeyboard InputPanel 布局?
- elasticsearch - elasticsearch java api中的指数提升
- sql - 在主查询中使用子查询结果
- c# - 映射xml文件,然后导入xmls文件c#
- c# - 在 Razor Pages 应用程序中使用 Web API JWT 身份验证
- php - 在 Composer 自动加载中定义加载类的顺序