Панды используют индекс для добавления новых значений в новый столбец - PullRequest
0 голосов
/ 20 октября 2018

У меня есть два фрейма данных, и я хочу создать один фрейм данных.

Я обозначаю индекс, а V - это значение, которое меня интересует.

df1 похоже на

I V

A   4   
B   5       
C   8       
D   6      
F   2       

df2 похоже на

I V

A   8
C   6
D   9
E   4    
G   7

Я хочу вывод, как

I V1 v2

A   4   8
B   5   -    
C   8   6    
D   6   9   
E   -   4    
F   2   -    
G   -   7

Isесть прямой метод в Пандах, который может это сделать?или мне нужно использовать цикл для перебора набора всех индексов и вводить значение ячейка за ячейкой?

, как вы можете видеть, df1 и df2 имеют несколько уникальных строк.

Я действительноизвините за форматирование этих таблиц.

Мне пока не удалось выяснить, как это отформатировать.

РЕДАКТИРОВАТЬ: Да, я изначально опубликовал это с неправильными данными для df1.

в конце я использовал слияние.

Ответы [ 2 ]

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

Вам даже не нужно сливаться.Просто создайте новый DataFrame с df1 и df2 в качестве столбцов.

index2 = 'abcdef'
index1 = 'abcdeg'
df1 = pd.DataFrame(index=list(index1), data=list(range(len(index1))))
df2 = pd.DataFrame(index=list(index2), data=list(range(len(index2))))
pd.DataFrame(data={'a': df1.iloc[:, 0], 'b': df2.iloc[:, 0]})

     a    b
a  0.0  0.0
b  1.0  1.0
c  2.0  2.0
d  3.0  3.0
e  4.0  4.0
f  NaN  5.0
g  5.0  NaN
0 голосов
/ 20 октября 2018

Да, вы можете использовать слияние для того, что вы хотите:

df1 =  pd.DataFrame({"C1": ["A","B", "C", "D", "F" ] , "C2": [4,5,8,6,2]})
df2 =  pd.DataFrame({"C1": ["A","C", "D", "E", "G" ], "C2": [8,6,9,4,7]})

pd.merge(df1, df2, on="C1", how="outer").sort_values("C1")

Это дает следующее

    C1  C2_x C2_y
0   A   4.0 8.0
1   B   5.0 NaN
2   C   8.0 6.0
3   D   6.0 9.0
5   E   NaN 4.0
4   F   2.0 NaN
6   G   NaN 7.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...