为什么使用 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)
假设有一个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)