【问题标题】:Convert a DataFrame into a list: type of elements将 DataFrame 转换为列表:元素的类型
【发布时间】:2021-09-25 01:38:52
【问题描述】:

使用 Python,我正在从 excel 文件中读取一列:

df=pd.read_excel ('test.xlsx', sheet_name='comb', usecols ='A')

我将该列转换为列表:

col1 = list(df.values)

当我尝试使用这个名为 col1 的列表时,我有一个元素列表,其中每个元素都是一个 float64 数组:

col1 = [array([39349999.9999999]), array([0.]), array([0.]),...,array([0.])]

另一方面,我意识到如果我以这种方式添加列的标题:

col2 = list(df['Power (W)'].values)

我获得了同一个列表,现在称为 col2,但每个元素都是 float64 而不是数组。

col2 =[39349999.9999999, 0.0, 0.0,..., 0.0]

为什么会这样?

【问题讨论】:

    标签: python arrays list dataframe


    【解决方案1】:

    第一种情况

    df=pd.read_excel ('test.xlsx', sheet_name='comb', usecols ='A')
    col1 = list(df.values)
    col1 = [array([39349999.9999999]), array([0.]), array([0.]),...,array([0.])]
    

    您正在将数据框(二维矩阵)转换为列表列表。

    如果你打印 df 你会得到对象数组

    array([[1],
           [2],
           [3],
           [4],
           [5]])
    

    如果您将数据框转换为列表,您将获得一个 ARRAY OBJECTS 数组

    print(list(df.values))
    [array([1]), array([2]), array([3]), array([4]), array([5])]
    
    

    但是

    如果你用.tolist 转换熊猫的值,你会得到一个普通的数组数组

    print(df.values.tolist())
    [[1], [2], [3], [4], [5]]
    

    第二种情况

    col2 = list(df['Power (W)'].values)

    您选择了一列,因此您只有一个系列或数组,当您将其转换为列表时,它会变成一维数组列表。

    总结

    如果你制作一个 df 列表 -> 你有一个二维数组/列表

    如果你制作一个列的列表 -> 你有一个一维数组/列表

    【讨论】:

      猜你喜欢
      • 2021-11-19
      • 2021-12-06
      • 2011-01-24
      • 1970-01-01
      • 2022-01-01
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多