Изменение объектов массива на строку в пандах - PullRequest
0 голосов
/ 30 октября 2018

У меня есть следующий кадр данных панд:

df11 = pd.DataFrame(columns=["col1", "col2", "col3"])
df11.loc[1] = [2,["a","q","v"],["g","h","v"]]
df11.loc[2] = [21,["b","z","o"],["h"]]
df11.loc[3] = [11,["g","s","v"],["g","h","v"]]
df11.loc[4] = [2,["a","q","v"],["n","m","k","p"]]

Как я могу заменить массивы в col2 и col3 их строковым эквивалентом? как это:

df11 = pd.DataFrame(columns=["col1", "col2", "col3"])
df11.loc[1] = [2,"a,q,v","g,h,v"]
df11.loc[2] = [21,"b,z,o","h"]
df11.loc[3] = [11,"g,s,v","g,h,v"]
df11.loc[4] = [2,"a,q,v","n,m,k,p"]

1 Ответ

0 голосов
/ 30 октября 2018

Использовать str.join со списком имен столбцов в цикле:

cols = ['col2','col3']
for c in cols:
    df11[c] = df11[c].str.join(',')

Или используйте applymap:

df11[cols] = df11[cols].applymap(','.join)

Или решение для понимания списка:

L = [[','.join(y for y in x) for x in df11[c]] for c in cols]
df11[cols] = pd.DataFrame(L, columns=df11.index).T

print (df11)
  col1   col2     col3
1    2  a,q,v    g,h,v
2   21  b,z,o        h
3   11  g,s,v    g,h,v
4    2  a,q,v  n,m,k,p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...