我正在使用Pandas和NumPy进行计算
这是我的代码:
import pandas as pd
import numpy as np
imp = pd.read_csv("test.txt", sep=' ', )
imp_vert = imp.iloc[:, 2:].astype(float).replace(0, np.nan).mean()
print(round(imp_vert, 1))
这是我的test.txt
subject1 subject2
7 4
8 8
5 7
4 0
结果是:
subject1 6
subject2 6,3
dtype: float64
如何从显示中删除dtype:float64?
谢谢您的建议。
答案 0 :(得分:1)
在这种情况下,您需要.values
属性:
print(imp_vert.values)
print(round(imp_vert, 1).values)
OR
myarr = imp_vert.values
print(myarr)
因此,由于我无法重现您的dataFrame,因此我将给出一个示例,对您有所帮助!
>>> df1
total
cat1 25.23
cat2 3.55
cat3 76.55
cat4 36.48
cat5 45.59
当您在下面进行操作时,它会在您拥有时最后返回dtype
!
>>> np.round(df1['total'], 1)
cat1 25.2
cat2 3.6
cat3 76.6
cat4 36.5
cat5 45.6
Name: total, dtype: float64
要在最后删除此代码,我们可以使用lambda exp将applymap
赋值给结果。
>>> df1.applymap(lambda x: round(x,1))
total
cat1 25.2
cat2 3.5
cat3 76.5
cat4 36.5
cat5 45.6
答案 1 :(得分:0)
我认为访问值的最“正常”方式是调用.tolist()
函数:
print(round(imp_vert, 1).tolist())
# [4.5, 7.0]
在阅读您的评论后,也许您对词典格式更感兴趣:
print(json.dumps(round(imp_vert, 1).to_dict(), indent=2))
#{
# "subject1": 4.5,
# "subject2": 7.0
#}
或csv格式:
print(round(imp_vert, 1).to_csv(sep=' '))
#subject1 4.5
#subject2 7.0
设置
import pandas as pd
import numpy as np
import json
with open("test.txt", "w") as f:
f.write('''\
subject1 subject2
7 4
8 8
5 7
4 0''')
imp = pd.read_csv("test.txt", sep=' ', )
imp_vert = imp.iloc[2:, :].astype(float).replace(0, np.nan).mean()