Группировка и добавление больших панелей данных Python - PullRequest
0 голосов
/ 04 июля 2018

У меня есть большой массив данных в пандах, который выглядит следующим образом:

  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 голосов
/ 04 июля 2018

Ключами являются pandas.DataFrame.groupby для группировки с узлами, pandas.core.groupby.DataFrameGroupBy.agg для агрегирования (суммы) по сгруппированным узлам и pandas.DataFrame.rename для переименуйте ваши столбцы.

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 и new_df2 - это то, что вы хотите.

Кстати, поскольку вы помечаете Python 2.7, обратите внимание, что pandas отбрасывает Python 2.7 .

0 голосов
/ 04 июля 2018

это довольно просто: при условии, что имя dataframe - 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]

Вы получаете два новых кадра данных с соответствующими значениями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...