Python 为什么使用read_csv()创建的数据帧与使用相同数据的数据帧创建的数据帧不同?

Python 为什么使用read_csv()创建的数据帧与使用相同数据的数据帧创建的数据帧不同?,python,pandas,numpy,dataframe,nan,Python,Pandas,Numpy,Dataframe,Nan,假设有一个csv文件,如下所示: # data.csv 0,1,2,3,4 a,3.0,3.0,3.0,3.0,3.0 b,3.0,3.0,3.0,3.0,3.0 c,3.0,3.0,3.0,3.0,3.0 d,3.0,3.0,3.0,3.0,3.0 现在我创建了两个数据帧:一个来自csv文件,另一个使用DataFrame()。 我希望这两个数据帧是相等的 #将csv文件读入pandas.DataFrame A=pandas.read_csv('data.csv')) #手动创建(相同?)数据

假设有一个csv文件,如下所示:

# data.csv
0,1,2,3,4
a,3.0,3.0,3.0,3.0,3.0
b,3.0,3.0,3.0,3.0,3.0
c,3.0,3.0,3.0,3.0,3.0
d,3.0,3.0,3.0,3.0,3.0
现在我创建了两个数据帧:一个来自csv文件,另一个使用
DataFrame()
。 我希望这两个数据帧是相等的

#将csv文件读入pandas.DataFrame
A=pandas.read_csv('data.csv'))
#手动创建(相同?)数据帧
B=pandas.DataFrame(3*numpy.one((4,5)),索引=['a','B','c','d']))
但是,如果我减去它们,我得到:

打印(A-B)
0   1   2   3   4   0   1   2   3   4
阿楠楠楠楠楠楠楠楠
b楠楠楠楠楠楠楠楠楠楠
南南南南南
d楠楠楠楠楠楠楠楠楠楠

知道为什么吗?

数据帧不相等,因为在
A
中是列名字符串,在
B
中是整数

所以需要将整数列转换为整数:

A = pandas.read_csv('data.csv').rename(columns=int)
或将
B
列转换为字符串:

B = pandas.DataFrame(3*numpy.ones((4,5)), index=['a', 'b', 'c', 'd']).rename(columns=str)