Моя программа вычисляет значения в виде строки, а не в виде числа с плавающей запятой, даже когда iichange типа - PullRequest
0 голосов
/ 29 октября 2018

У меня проблема с моей программой, и я запутался, я не знаю, почему это не изменит тип столбцов, или, возможно, он меняет тип столбцов и просто все еще вычисляет столбцы как строка Когда я изменяю тип на float, если я хочу, чтобы он был умножен на 8, он даст мне, например, 4, 44444444. Вот мой код.

import pandas as pd
import re
import numpy as np

link = "excelfilett.txt"
file = open(link, "r")
frames = []
is_count_frames = False
for line in file:
  if "[Frames]" in line:
      is_count_frames = True
  if is_count_frames == True:
      frames.append(line)
  if "[EthernetRouting]" in line:
      break
number_of_rows = len(frames) - 3
header = re.split(r'\t', frames[1])
number_of_columns = len(header)

frame_array = np.full((number_of_rows, number_of_columns), 0)
df_frame_array = pd.DataFrame(frame_array)

df_frame_array.columns= header
for row in range(number_of_rows):
   frame_row = re.split(r'\t',frames[row+2])
   for position in range(len(frame_row)):
        df_frame_array.iloc[row, position]=frame_row[position]

df_frame_array['[MinDistance (ms)]'].astype(float)

df_frame_array.loc[:,'[MinDistance (ms)]'] *= 8
print(df_frame_array['[MinDistance (ms)]'])

но это дает мне 8-кратное значение, как (100100 ... 100100), я также пытался поместить их в список

MinDistList = df_frame_array['[MinDistance (ms)]'].tolist()
product = []
for i in MinDistList:
    product.append(i*8)
print(product)

но это все равно не сработает, есть идеи?

1 Ответ

0 голосов
/ 29 октября 2018

df_frame_array['[MinDistance (ms)]'].astype(float) не меняет столбец на месте, но возвращает новый.

У вас была правильная идея, поэтому просто сохраните ее:

df_frame_array['[MinDistance (ms)]'] = df_frame_array['[MinDistance (ms)]'].astype(float)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...