我在熊猫中有一个大数据框,看起来像这样:
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列中的索引。
我该怎么做?
答案 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。