Получить первую букву строки из столбца

Я сражаюсь с pandas, и пока я теряю. У меня есть исходная таблица, подобная этой:

import pandas as pd

a=pd.Series([123,22,32,453,45,453,56])
b=pd.Series([234,4353,355,453,345,453,56])
df=pd.concat([a, b], axis=1)
df.columns=['First', 'Second']

Я хотел бы добавить новый столбец в этот фрейм данных с первой цифрой из значений в столбце "Первый": а) изменить номер на строку из столбца "Первый" б) извлечение первого символа из вновь созданной строки c) Результаты из b сохраняются как новый столбец в фрейме данных

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

Ответ 1

Переместите dtype в col на str, и вы можете выполнить нарезку с надписью str:

In [29]:
df['new_col'] = df['First'].astype(str).str[0]
df

Out[29]:
   First  Second new_col
0    123     234       1
1     22    4353       2
2     32     355       3
3    453     453       4
4     45     345       4
5    453     453       4
6     56      56       5

если вам нужно, вы можете снова направить dtype, вызвав astype(int) в столбце

Ответ 2

.str.get

Это самый простой способ указать строковые методы

# Setup
df = pd.DataFrame({'A': ['xyz', 'abc', 'foobar'], 'B': [123, 456, 789]})
df

        A    B
0     xyz  123
1     abc  456
2  foobar  789

df.dtypes

A    object
B     int64
dtype: object

Для столбцов строкового (читай: object) типа используйте

df['C'] = df['A'].str[0]
# Similar to,
df['C'] = df['A'].str.get(0)

Для нечисловых столбцов необходимо предварительно преобразовать .astype, как показано в ответе @Ed Chum.

df['D'] = df['B'].astype(str).str[0]

df
        A    B  C  D
0     xyz  123  x  1
1     abc  456  a  4
2  foobar  789  f  7

Понимание списка и индексация

Простое понимание списка будет работать хорошо и, вероятно, будет быстрее.

# For string columns
df['C'] = [x[0] for x in df['A']]

# For numeric columns
df['D'] = [str(x)[0] for x in df['B']]

df
        A    B  C  D
0     xyz  123  x  1
1     abc  456  a  4
2  foobar  789  f  7