Pandas выпуск Преобразование% в число с плавающей точкой (путем деления на 100), я хочу, чтобы это было как строка со знаком% - PullRequest
0 голосов
/ 17 марта 2020
import pandas as pd

df = pd.read_excel('Test.xlsx', dtype={'String Column': str})

print(df)

это код, а вот XLSX .

я хочу прочитать String Column как str, а другой столбец как pandas прочитайте его.

вот вывод, который я получаю.

   Percentage Column String Column
0               0.05          0.02
1              45.00          0.05
2              39.00            44

Вывод, который я хочу:

   Percentage Column String Column
0               0.05            2
1              45.00            5
2              39.00            44

Я много чего пробовал в этом строка кода:

df = pd.read_excel('Test.xlsx', converters={'String Column': str})
df = pd.read_excel('Test.xlsx', dtype={'String Column': object})
df = pd.read_excel('Test.xlsx', dtype=str)

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Я думаю, что проблема с вашим файлом Excel

ваши типы данных в pandas в порядке

import pandas as pd

df = pd.read_excel('Test.xlsx', dtype={'String Column': str})

print(df.dtypes)
print()
print(df)

Результаты

Percentage Column    float64
String Column         object
dtype: object

   Percentage Column String Column
0               0.05          0.02
1              45.00          0.05
2              39.00            44

Но ваши файлы Excel по умолчанию настроил ячейки в процентах

enter image description here enter image description here

PD: Porcentaje = Percentage

Вы можете установить буквенную строку в Excel ="2%" сохранить прогон снова.
Я просто поставил 2%, но вы можете поставить то, что вы хотите, int et c.

Percentage Column    float64
String Column         object
dtype: object

   Percentage Column String Column
0               0.05            2%
1              45.00            5%
2              39.00            44
0 голосов
/ 17 марта 2020

Почему бы не использовать pandas.apply() здесь?:

data=[['1',.02,.04],['2',.05,44]]
df = pd.DataFrame(data,columns=['col1','col2','col3'])
def _from_float(x):
  if x<1: return x*100
  else  : return x

df['col3'] = df['col3'].apply(_from_float).astype(int) ## or use str

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...