分组和添加大型数据框python熊猫

时间:2018-07-04 10:21:30

标签: python python-2.7 pandas

我在熊猫中有一个大数据框,看起来像这样:

  from_node  to_node  0
0                     
1 1907 2343 0.1
2 2343 2344 0.2
3 2050 2051 0.1
4 2050 2344 0.4
 ....

我想创建2个新的数据框 继续使用node_loss,以便将0列中的数据分组并添加到from_node的索引中,并使用一个node_add来添加数据帧,以便将0列中的相同数据分组并添加到to_node列中的索引。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

非常简单: 假设数据框的名称为df 制作一个新的数据框: new1=pd.DataFrame 将所需的列一起添加:

new1["from_node"]=df["from_node"]

new1["node_loss"]=df[0]

类似地,您也可以对第二个数据帧重复相同的操作:

再创建一个新的数据帧:new2=pd.DataFrame()

将所需的列添加在一起:

new2["to_node"]=df["to_node"]

new2["node_loss"]=df[0]

您将获得两个具有相应值的新数据框

答案 1 :(得分:0)

键是pandas.DataFrame.groupby与节点分组,pandas.core.groupby.DataFrameGroupBy.agg由分组节点聚合(求和),以及pandas.DataFrame.rename重命名列。

const_cast

现在import pandas as pd df = pd.DataFrame({"from_node": [1907, 2343, 2050, 2050], "to_node": [2343, 2344, 2051, 2344], "0": [0.1, 0.2, 0.1, 0.4]}) new_df1 = df.groupby("from_node").agg({"0": "sum"}).rename(columns={"0": "node_loss"}) new_df2 = df.groupby("to_node").agg({"0": "sum"}).rename(columns={"0": "node_add"}) new_df1就是您想要的。

顺便说一句,由于要标记Python 2.7,因此请注意pandas is dropping Python 2.7