Конкретный кадр данных Pandas с указанием местоположения индекса - PullRequest
0 голосов
/ 26 июня 2018

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

# First dataframe, lots of rows, index on (city, animal, zoo)
city       animal   zoo
boston     pig      bns
new york   tiger    nycz
[...]

# Second dataframe, one row, non-label index 
    apple  banana   ...  grape
0   5      10       ...  37

Я знаю индекс, к которому я хочу добавить свой второй кадр данных (но не номер строки): index = (boston, big, bns).Поэтому я попытался сделать:

first_dataframe[index, second_dataframe.columns] = second_dataframe

Но я получаю KeyError, так как столбцы в second_dataframe еще не существуют в первом.Я думал, что merge или join могут быть правильными, но они требуют общих индексов.concat выглядит наиболее правильно, но я не знаю, как указать which строка в первом кадре данных должна получить мой второй.

Мой желаемый вывод:

city       animal   zoo   apple  banana   ...  grape
boston     pig      bns   0   5      10   ...  37
new york   tiger    nycz  NaN NaN    NaN  ...  NaN
[...]     

1 Ответ

0 голосов
/ 26 июня 2018

Сначала создайте столбцы в df1, затем присвойте значение df2 с помощью .values с помощью loc

index = ('boston', 'pig', 'bns')
df1=df1.assign(**dict(zip(df2.columns,[np.nan]*df2.shape[1])))
df1.loc[index,df2.columns]=df2.values
df1
                     apple  banana  grape
city    animal zoo                       
boston  pig    bns     5.0    10.0   37.0
newyork tiger  nycz    NaN     NaN    NaN
LOL     L      L       NaN     NaN    NaN
LOL1    L1     L1      NaN     NaN    NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...