为什么使用 read_csv() 创建的 DataFrame 与使用相同数据的 DataFrame() 创建的另一个 DataFrame 不同?

Why is a DataFrame created with read_csv() different than another one created with DataFrame() with the same data?

假设有一个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()。 我希望两个 DataFrame 相等。

# Read the csv file into a pandas.DataFrame
A = pandas.read_csv('data.csv')

# Create (same?) dataframe by hand
B = pandas.DataFrame(3*numpy.ones((4,5)), index=['a', 'b', 'c', 'd'])

然而,如果我减去它们,我得到:

print(A-B)
    0   1   2   3   4   0   1   2   3   4
a NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
b NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
c NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
d NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

知道为什么吗?

数据帧不相等,因为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)