【问题标题】:Why is a DataFrame created with read_csv() different than another one created with DataFrame() with the same data?为什么使用 read_csv() 创建的 DataFrame 与使用 DataFrame() 创建的具有相同数据的 DataFrame 不同?
【发布时间】:2020-01-14 01:29:28
【问题描述】:

假设有一个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

有什么想法吗?

【问题讨论】:

    标签: python pandas numpy dataframe nan


    【解决方案1】:

    DataFrame 不相等,因为在 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-18
      • 2022-12-03
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      相关资源
      最近更新 更多