Python: соединить 2 столбца фрейма данных вместе - PullRequest
1 голос
/ 05 августа 2020

Я загружаю файл csv во фрейм данных, используя pandas.

Мой фрейм данных выглядит примерно так:

col1       col2       col3         
1           4           1 
2           5           2
3           6           3

Я sh добавляю 2 из столбцы в новый столбец:

  col1       col2        col3       col4   
    1           4           1         1
    2           5           2         2
    3           6           3         3
                                      4
                                      5 
                                      6

col4 необходимо создать путем добавления содержимого col1 и col2 вместе.

Как я могу сделать это в pandas / python?

РЕДАКТИРОВАТЬ

df = df.reset_index(drop=True)

s = df['full_name'].append(df['alt_name'], ignore_index=True).rename('combined_names')
df = df.join(s, how='outer')

df = df.reset_index(drop=True)

s = df['full_address'].append(df['alt_add'], ignore_index=True).rename('combined_address')
df = df.join(s, how='outer')

1 Ответ

1 голос
/ 05 августа 2020

Сначала используйте Series.append или concat с rename для нового Series, а затем добавьте к исходному с помощью DataFrame.join или concat:

s = df['col1'].append(df['col2'], ignore_index=True).rename('col4')
#alternative
#s = pd.concat([df['col1'], df['col2']], ignore_index=True).rename('col4')

df1 = df.join(s, how='outer')
#alternative
#df1 = pd.concat([df, s], axis=1)
print (df1)

   col1  col2  col3  col4
0   1.0   4.0   1.0     1
1   2.0   5.0   2.0     2
2   3.0   6.0   3.0     3
3   NaN   NaN   NaN     4
4   NaN   NaN   NaN     5
5   NaN   NaN   NaN     6

Последнее, чтобы избежать преобразования в числа с плавающей запятой, можно использовать:

df1 = df1.astype('Int64')
print (df1)
   col1  col2  col3  col4
0     1     4     1     1
1     2     5     2     2
2     3     6     3     3
3  <NA>  <NA>  <NA>     4
4  <NA>  <NA>  <NA>     5
5  <NA>  <NA>  <NA>     6

Или преобразовать отсутствующие значения в пустые строки (что должно быть проблемой, если потребуется обработка df позже каким-либо методом numeri c) :

df1 = df1.fillna('')
print (df1)

  col1 col2 col3  col4
0    1    4    1     1
1    2    5    2     2
2    3    6    3     3
3                    4
4                    5
5                    6

РЕДАКТИРОВАТЬ:

df = df.reset_index(drop=True)

s1 = df['full_name'].append(df['alt_name'], ignore_index=True).rename('combined_names')
s2 = df['full_address'].append(df['alt_add'], ignore_index=True).rename('combined_address')

df1 = pd.concat([df, s1, s2], axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...