我的程序有问题,我很困惑,我不知道为什么它不会更改列的类型,或者也许它正在更改列的类型,并且仍然只计算列作为字符串。当我将类型更改为float时,如果我希望将其乘以8,它将得到例如4,4,444444444的代码。这是我的代码。
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)]'])
但是它给我的价值是(100100 ... 100100)的8倍,我也尝试将它们放在列表中
MinDistList = df_frame_array['[MinDistance (ms)]'].tolist()
product = []
for i in MinDistList:
product.append(i*8)
print(product)
但是它仍然行不通,有什么想法吗?
答案 0 :(得分:2)
df_frame_array['[MinDistance (ms)]'].astype(float)
不会更改该列,但会返回一个新列。
您有正确的想法,因此只需将其存储回去即可:
df_frame_array['[MinDistance (ms)]'] = df_frame_array['[MinDistance (ms)]'].astype(float)