Как вставить строки из одного столбца панд DataFrame в другой столбец по определенному индексу? - PullRequest
0 голосов
/ 08 декабря 2018

Моя проблема

У нас есть данные этого типа массива как m:

    0   1   2   3
0   746200.0    IP:aWSrjjB  foldcauchy  foldcauchy(c=3.40, loc=853.32, scale=188436.01)
1   1061881.5   IP:joW6uH4  johnsonsu   johnsonsu(a=-0.39, b=0.46, loc=715076.10, scale=70401.41)
2   645000.0    IP:4Q3L2kB  foldcauchy  foldcauchy(c=3.94, loc=835.77, scale=184545.16)
3   284375.0    IP:WLP1cdn  loglaplace  loglaplace(c=1.81, loc=-1001.33, scale=701001.33)
4   666600.0    IP:kQn348T  johnsonsu   johnsonsu(a=-0.39, b=0.46, loc=715076.10, scale=70401.41)
5   754678.5    IP:kQn348T  loglaplace  loglaplace(c=1.93, loc=-1087.33, scale=786087.33)

Второй столбец - уникальный IP-адрес для каждой строки.Тип: str.

Последний столбец представляет собой набор распределений для каждой строки.тип: str.

Я хотел бы добавить уникальный IP-адрес в последний столбец.


Моя попытка

Я пытался использоватьследующий код:

V = []
([V.append(m[3][1]), V.append(m[1][1])])

Тем не менее, это привело к неправильному выводу:

 ['loglaplace(c=1.88, loc=-932.82, scale=674382.82)',
 'IP:slaL5jw']

Хотя я мог бы использовать str( ['loglaplace(c=1.88, loc=-932.82, scale=674382.82)', 'IP:slaL5jw'])


Пример желаемого выхода:

   0   1   2   3
0   746200.0    IP:aWSrjjB  foldcauchy  foldcauchy(c=3.40, loc=853.32, scale=188436.01, IP:aWSrjjB)
1   1061881.5   IP:joW6uH4  johnsonsu   johnsonsu(a=-0.39, b=0.46, loc=715076.10, scale=70401.41, IP:joW6uH4)

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Все так просто:

>>> df[3] = df[3].str[:-1] + ', ' + df['1'] + ')'
>>> df
    0   1   2   3
0   746200.0    IP:aWSrjjB  foldcauchy  foldcauchy(c=3.40, loc=853.32, scale=188436.01, IP:aWSrjjB)
1   1061881.5   IP:joW6uH4  johnsonsu   johnsonsu(a=-0.39, b=0.46, loc=715076.10, scale=70401.41, IP:joW6uH4)
2   645000.0    IP:4Q3L2kB  foldcauchy  foldcauchy(c=3.94, loc=835.77, scale=184545.16, IP:4Q3L2kB)
3   284375.0    IP:WLP1cdn  loglaplace  loglaplace(c=1.81, loc=-1001.33, scale=701001.33, IP:WLP1cdn)
4   666600.0    IP:kQn348T  johnsonsu   johnsonsu(a=-0.39, b=0.46, loc=715076.10, scale=70401.41, IP:kQn348T)
5   754678.5    IP:kQn348T  loglaplace  loglaplace(c=1.93, loc=-1087.33, scale=786087.33, IP:kQn348T)

Ссылки:
Панды создают новый столбец из фрагмента строки другого столбца
Объедините два столбца текста вдатафрейм в пандах / питоне

0 голосов
/ 08 декабря 2018

Что-то вроде этого?

df[3].combine(df[1], lambda x, y: x.replace(")", ", {})".format(y)))

pandas.Series.combine - это хорошая функция, которую вы можете использовать, чтобы применить преобразование к двум столбцам одновременно, создав третий или заменив один из них.В этом случае он просто заменяет конечный ")" в вашем столбце 3 значением из столбца 1.

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