Объединить pandas dataframe со списком через внешнее объединение - PullRequest
0 голосов
/ 11 сентября 2018

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

   A  B
0  1  4
1  2  5
2  3  6

и список

names = ['x','y']

Я хочу получить фрейм данных такого рода и внешнее соединение с этим списком. Желаемый результат:

   A  B  name
0  1  4  x
1  1  4  y
2  2  5  x
3  2  5  y
4  3  6  x
5  3  6  y

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Использование дополнительной клавиши для merge

df.assign(key=1).merge(pd.DataFrame({'Name':names,'key':1})).drop('key',1)
Out[54]: 
   A  B Name
0  1  4    x
1  1  4    y
2  2  5    x
3  2  5    y
4  3  6    x
5  3  6    y
0 голосов
/ 11 сентября 2018

Понимание

pd.DataFrame(
    [r + (n,) for r in zip(*map(df.get, df)) for n in names],
    columns=[*df.columns, *['name']]
)

   A  B name
0  1  4    x
1  1  4    y
2  2  5    x
3  2  5    y
4  3  6    x
5  3  6    y
0 голосов
/ 11 сентября 2018

Использование pd.concat:

res = pd.concat([df.assign(name=i) for i in names], ignore_index=True)

Результат:

   A  B name
0  1  4    x
1  2  5    x
2  3  6    x
3  1  4    y
4  2  5    y
5  3  6    y
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...