我有多个与此相似的数据框:
date val1 val2 val3 val4
2020-11-06 10:00:00 0.5 1.0 1.1 1.2
2020-11-06 11:00:00 1.5 1.3 0.1 1.3
2020-11-06 12:00:00 4.5 1.2 2.1 5.2
date val1 val2 val3 val4
2020-11-06 10:00:00 1.5 2.0 2.1 2.2
2020-11-06 11:00:00 2.5 2.3 1.1 2.3
2020-11-06 12:00:00 5.5 2.2 3.1 6.2
那么一些日期,然后是一些值。在每个数据框中,日期都是相同的,这使日期成为ID。我想做的只是添加所有按日期索引的数据框的值。因此,在上面的示例中,结果数据帧应为:
date val1 val2 val3 val4
2020-11-06 10:00:00 2.0 3.0 3.2 3.4
2020-11-06 11:00:00 4.0 3.6 1.2 3.6
2020-11-06 12:00:00 10.0 3.4 5.2 11.4
答案 0 :(得分:3)
您只需要设置索引并添加数据框:
+------+--------+----------+
| id | name | amount |
+------+--------+----------+
| 1 | josh | 250 |
| 2 | jane | 200 |
| 3 | john | 250 |
----------------------------
然后,如果您不希望out = df1.set_index("date") + df2.set_index("date")
print(out)
val1 val2 val3 val4
date
2020-11-06 10:00:00 2.0 3.0 3.2 3.4
2020-11-06 11:00:00 4.0 3.6 1.2 3.6
2020-11-06 12:00:00 10.0 3.4 5.2 11.4
成为官方"date"
,则只需致电index
.reset_index()
另一种方法是将内置的out = out.reset_index()
print(out)
date val1 val2 val3 val4
0 2020-11-06 10:00:00 2.0 3.0 3.2 3.4
1 2020-11-06 11:00:00 4.0 3.6 1.2 3.6
2 2020-11-06 12:00:00 10.0 3.4 5.2 11.4
与生成器表达式一起使用,这样您就无需在每个sum
上显式设置index
:
DataFrame
答案 1 :(得分:0)
您可以简单地添加两个数据框!
我建议您先将索引设置为日期,然后将值转换为浮点数(如果尚未将其转换为
)private static Quaternion rotationBetweenTwoVectors(Vector3 vec1, Vector3 vec2)
{
Quaternion result = Pools.obtain(Quaternion.class);
Vector3 u = Pools.obtain(Vector3.class).set(vec1).nor();
Vector3 v = Pools.obtain(Vector3.class).set(vec2).nor();
float dot = u.dot(v);
if(dot < -0.999999)
{
Vector3 tmp1 = Pools.obtain(Vector3.class).set(Vector3.X).crs(u);
if(tmp1.len() < 0.000001)
{
tmp1.set(Vector3.Y).crs(u);
}
tmp1.nor();
result.setFromAxisRad(tmp1, MathUtils.PI).nor();
Pools.free(tmp1);
}
else if(dot > 0.999999)
{
result.idt();
}
else
{
result.setFromCross(u, v);
}
Pools.free(u);
Pools.free(v);
return result;
}
答案 2 :(得分:0)
您可以将df.append
与date
和df.groupby
上的df.sum
一起使用:
In [1266]: df1.append(df2).groupby('date').sum()
Out[1266]:
val1 val2 val3 val4
date
2020-11-06 10:00:00 2.0 3.0 3.2 3.4
2020-11-06 11:00:00 4.0 3.6 1.2 3.6
2020-11-06 12:00:00 10.0 3.4 5.2 11.4
或者简单地:
In [1267]: df1.set_index('date') + df2.set_index('date')
Out[1267]:
val1 val2 val3 val4
date
2020-11-06 10:00:0010:00:00 2.0 3.0 3.2 3.4
2020-11-06 11:00:0011:00:00 4.0 3.6 1.2 3.6
2020-11-06 12:00:0012:00:00 10.0 3.4 5.2 11.4
答案 3 :(得分:0)
您可以添加两个数据帧和.set_index
:
(df1+df2).set_index('date')