Панды преобразуют столбец объекта в строковый тип - PullRequest
0 голосов
/ 17 октября 2019

Я не понимаю следующее странное поведение преобразования в пандах:

d = pd.DataFrame({'a':['x', 'y'], 'b': ['s', 't']})
s = d['a'].astype('|S1')
print(s.dtypes)
d['a'] = s
print(d.dtypes)
print(s.dtypes)
print(d.astype('|S1').dtypes)

произвело вывод:

|S1
a    object
b    object
dtype: object
|S1
a    |S1
b    |S1
dtype: object

Когда я преобразовываю столбец как pd.Series, он получаетконвертируется, но при возврате в DataFrame возвращается обратно к Object. Но весь DataFrame может быть преобразован. Что дает?

Я искал документацию, чтобы найти ссылку на это поведение, но не нашел никакой подсказки.

Просто для полноты, вот сокращенная версия:

python           : 3.7.3.final.0
python-bits      : 64
OS               : Windows
OS-release       : 10
machine          : AMD64
processor        : Intel64 Family 6 Model 158 Stepping 9, GenuineIntel

pandas           : 0.25.1
numpy            : 1.17.1

1 Ответ

0 голосов
/ 17 октября 2019

Надеюсь, это поможет, если я пойму проблему:

Попробуйте перезаписать столбец, а не присваивать его s

d = pd.DataFrame({'a':['x', 'y'], 'b': ['s', 't']})
d['a'] = d['a'].astype('|S1')

Я всегда привык использовать .astype (str),но не уверен в вашей конкретной ситуации.

...