#python #dataframe #csv #data-manipulation
Вопрос:
Я читаю некоторые csv-файлы, и, к сожалению, я получаю значения с » или значения, заканчивающиеся на .0 Я хотел бы знать, можно ли удалить это из фрейма данных ?
Это данные, которые я получаю:
['100002134511', '100002087058', '100002087114', '100002087082', '100002087074', '100002087072', '100002087070', '100002087068', '100002087148', '100002087149', '100002087151', 'ESZ1', 'NQZ1', 'IKZ1', 'OEZ1', 'UBZ1', 'G Z1', 'FVZ1', 'BTSZ1', 'TYZ1', 'JBZ1', 'OATZ1', 'DUZ1', 'UXYZ1', 'YMZ1', 'L M4', 'EDU3', 'SFIH3', 'L H3', 'EDH6', 'EDZ4', 'EDZ5', 'EDZ1', 'L U3', 'EDU4', 'SFIU1', 'EDH3', 'EDU5', 'EDM2', 'EDH4', 'EDZ3', 'EDM5', 'L H2', 'L M3', 'EDH2', 'EDM6', 'SFIM4', 'L M5', 'SFIZ3', 'EDM3', 'ERH2', 'L M2', 'L U4', 'EDZ2', 'L Z3', 'L U2', 'SFIH4', 'L H4', 'ERM2', 'EDH5', 'SFIZ2', 'EDU2', 'SFIH2', 'L Z2', 'L H5', 'EDM4', 'SFIZ1', 'SFIU2', 'SFIM3', 'ERH3', 'EDU6', 'L Z1', 'SFIU3', 'ERU2', 'L U5', 'SFIU4', 'L Z4', 'ERU3', 'ERZ1', 'SFIM2', 'ERV1', 'EDZ6', 'EDH7', 'ERM3', 'ERM4', 'ERH4', 'ERZ3', 'ERZ2', 'ERU4']
Я попытался решить эту проблему, сделав замену (), но это не сработало :s
# Drop any blank fields and duplicates nan_value = float("NaN") df_position.replace("", nan_value, inplace=True) df_position.dropna(subset=["SecurityReference"], inplace=True) df_position.drop_duplicates(subset=["SecurityReference"], inplace=True) df_tradeCash.replace("", nan_value, inplace=True) df_tradeCash.dropna(subset=["MurexSecurityReference"], inplace=True) df_tradeCash.drop_duplicates(subset=["MurexSecurityReference"], inplace=True) # Get values tradePositionList = df_position["SecurityReference"].tolist() # 34076 tradeCashList = df_tradeCash["MurexSecurityReference"].tolist() # 35777 securitylist = tradePositionList tradeCashList # remove .0 and '' str_list = [str(i).replace(".0", "") for i in securitylist if i != ""] new_list = [str(i).replace('', "") for i in str_list] print(new_list)
Любые идеи, как я могу получить эти значения без » ?
Спасибо вам всем.
Комментарии:
1. Являются ли эти значения из одного и того же столбца? или из двух разных групп столбцов? по сути, вы спрашиваете , что вы хотите, чтобы они были типа
int
данных, а неstring
илиfloat
, так почему бы не привести тип кint
?2. Да, эти значения берутся из двух столбцов, в данном случае из двух фреймов данных, которые я преобразовал в список, а затем создал список со всеми значениями, потому что тогда мне нужно провести сравнение. Я не могу преобразовать их в int, потому что я тоже получаю некоторые слова, а не только цифры.
Ответ №1:
Попробуй вот это.
lst=['100002111020','', '100002114960', '100002118038', '100002118341', '100002118723', '100002124056', '100002124472', '100002125623', '100002132063', '100002133259', '100002140470', '100002142166', '100002145213', '100002145655', '100002147566', '100002147568', '100002149569', '100002149570', '100002153436', '100002155722', '100002156059', '100002156610', '100002160798', '100002167870', '100002167871', '100002172281', '100002173832', '100002173833', '100002173834', '100002175111', '100002178288', 100001385479.0, 100001419963.0, 100001465490.0, 100001475101.0, 100001481123.0, 100001499246.0, 100001519126.0, 100001526718.0, 100001540507.0, 100001547351.0] #Convert list element to string then truncate '.0' and remove any empty elements. str_list=[str(i).replace('.0','') for i in lst if i !=''] # Then convert list element to int values int_list=[int(i) for i in str_list] print(int_list)
[Вывод]
[100002111020, 100002114960, 100002118038, 100002118341, 100002118723, 100002124056, 100002124472, 100002125623, 100002132063, 100002133259, 100002140470, 100002142166, 100002145213, 100002145655, 100002147566, 100002147568, 100002149569, 100002149570, 100002153436, 100002155722, 100002156059, 100002156610, 100002160798, 100002167870, 100002167871, 100002172281, 100002173832, 100002173833, 100002173834, 100002175111, 100002178288, 100001385479, 100001419963, 100001465490, 100001475101, 100001481123, 100001499246, 100001519126, 100001526718, 100001540507, 100001547351]
Комментарии:
1. Он попросил избавиться от»», которые окружают каждую строку.
2. @ImSo3K, большое тебе спасибо . Теперь код обновляется после преобразования элементов списка в значения int .
3. Спасибо за ответ @AziMez, но я не могу преобразовать их в int, так как я тоже получаю некоторые слова, а не только цифры.
4. @BrunoLorena, Итак, вы можете использовать метод isdigit для преобразования только таких чисел, как ‘100002111020’ , в правильный формат 100002111020 . Но сохраняем другие значения, которые содержат слова в строковом формате с кавычками ‘ ‘ . Это то, что ты ищешь?
5. Хорошо @AziMez, к сожалению, у меня есть » во многих значениях, а не только в числах :s