Как скопировать заголовки столбцов фрейма данных в каждое значение строки? - PullRequest
3 голосов
/ 03 мая 2019

Я пытаюсь преобразовать фрейм данных pandas, применяя функцию ко всем значениям, чтобы объединить заголовок столбца и фактическое значение.

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

|---------------------|------------------|
|         Col1        |        Col2      |
|---------------------|------------------|
|          12         |         34       |
|---------------------|------------------|
|          12         |         34       |

Вывод должен быть:

|---------------------|------------------|
|       Col1          |      Col2        |
|---------------------|------------------|
|       Col1_12       |      Col2_34     |
|---------------------|------------------|
|       Col1_12       |      Col2_34     |

Я попробовал вот что:

mypandasdf.applymap(lambda x: 'columnname'+'_'+str(x))

Но я борюсь со значением имени столбца. Как я могу поставить реальное имя столбца вместо строки? Или есть другой / лучший способ сделать это?

Ответы [ 4 ]

3 голосов
/ 03 мая 2019
df = pd.DataFrame({'colA': [12,34], 'colB': [56,78]})

df = df.columns.values + '_' + df.astype(str)

print(df)

Выход:

      colA     colB
0  colA_12  colB_56
1  colA_34  colB_78
2 голосов
/ 03 мая 2019

Преобразуйте каждую строку в вашем фрейме данных в строку и укажите имя столбца:

df = pd.DataFrame({
                   "col1": [12 , 34],
                   'col2': [7,9]},)
for c in df:
    df[c] = c + '_' + df[c].astype(str)
df

Результат:

    col1    col2
0   col1_12 col2_7
1   col1_34 col2_9
2 голосов
/ 03 мая 2019

IIUC

df.apply(lambda x : x.name+'_'+x.astype(str))
Out[1323]: 
      Col1     Col2
0  Col1_12  Col2_34
1  Col1_12  Col2_34
2 голосов
/ 03 мая 2019

Используйте DataFrame.columns для доступа к каждому столбцу и объединения в виде строки для каждого значения:

for col in df.columns:
    df[col] = col + '_' + df[col].astype(str)

print(df)
      Col1     Col2
0  Col1_12  Col2_34
1  Col1_12  Col2_34
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...