【问题标题】:Convert List to Pandas Dataframe Column将列表转换为 Pandas 数据框列
【发布时间】:2017-06-22 07:04:18
【问题描述】:

我需要将我的列表转换为一列熊猫数据框

当前列表 (len=3):

['Thanks You',
 'Its fine no problem',
 'Are you sure']

必需的 Pandas DF(形状 =3,):

0 Thank You
1 Its fine no problem
2 Are you sure

请注意,数字代表上面Required Pandas DF中的索引。

【问题讨论】:

  • 你的代码(和错误)值得,这样我们就可以解释你做错了什么

标签: python list pandas dataframe


【解决方案1】:

用途:

L = ['Thanks You', 'Its fine no problem', 'Are you sure']

#create new df 
df = pd.DataFrame({'col':L})
print (df)

                   col
0           Thanks You
1  Its fine no problem
2         Are you sure

df = pd.DataFrame({'oldcol':[1,2,3]})

#add column to existing df 
df['col'] = L
print (df)
   oldcol                  col
0       1           Thanks You
1       2  Its fine no problem
2       3         Are you sure

谢谢DYZ:

#default column name 0
df = pd.DataFrame(L)
print (df)
                     0
0           Thanks You
1  Its fine no problem
2         Are you sure

【讨论】:

  • df = pd.DataFrame(L)
  • @jezrael 嗨,如何设置与逗号不同的分隔符?
  • @sygneto - 你需要L = stringdata.split(';') 吗?
  • @jezarael 我正在尝试使用拆分,然后将其转换为数据帧,但我收到了AttributeError: 'list' object has no attribute 'split'
  • @GuillaumeLabs - 是的,如果使用list 之类的变量,比如list=[1,2,3],你需要list1L,然后重新启动IDE,一切正常。
【解决方案2】:

如果您的列表如下所示:[1,2,3] 您可以这样做:

import pandas as pd

lst = [1,2,3]
df = pd.DataFrame([lst])
df.columns =['col1','col2','col3']
df

得到这个:

    col1    col2    col3
0   1       2       3

或者,您可以按如下方式创建列:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.array([lst]).T)
df.columns =['col1']
df

得到这个:

  col1
0   1
1   2
2   3

【讨论】:

    【解决方案3】:

    例子:

    ['Thanks You',
     'Its fine no problem',
     'Are you sure']
    

    代码块:

    import pandas as pd
    df = pd.DataFrame(lst)
    

    输出:

        0
    0   Thanks You
    1   Its fine no problem
    2   Are you sure
    

    不建议删除 panda 数据框的列名。但是如果您仍然想要没有标题的数据框(根据您在问题中发布的格式),您可以这样做:

    df = pd.DataFrame(lst)    
    df.columns = ['']
    

    输出将是这样的:

    0   Thanks You
    1   Its fine no problem
    2   Are you sure
    

    df = pd.DataFrame(lst).to_string(header=False)
    

    但输出将是一个列表而不是数据框:

    0           Thanks You
    1  Its fine no problem
    2         Are you sure
    

    希望这会有所帮助!

    【讨论】:

      【解决方案4】:

      您可以直接调用pd.DataFrame() 方法并将您的列表作为参数传递。

      import pandas as pd
      l = ['Thanks You','Its fine no problem','Are you sure']
      pd.DataFrame(l)
      

      输出:

                            0
      0            Thanks You
      1   Its fine no problem
      2          Are you sure
      

      如果您有多个列表,并且想从中创建一个数据框。你可以这样做:

      import pandas as pd
      names =["A","B","C","D"]
      salary =[50000,90000,41000,62000]
      age = [24,24,23,25]
      data = pd.DataFrame([names,salary,age]) #Each list would be added as a row
      data = data.transpose() #To Transpose and make each rows as columns
      data.columns=['Names','Salary','Age'] #Rename the columns
      data.head()
      

      输出:

          Names   Salary  Age
      0       A    50000   24
      1       B    90000   24
      2       C    41000   23
      3       D    62000   25
      

      【讨论】:

      • 你可以做pd.DataFrame(zip(names,salary,age)),对吧?
      • 添加dtype参数显式设置列的数据类型
      • @adirabargil 是,然后相应地重命名列。
      【解决方案5】:

      为了将列表转换为 Pandas Core Data Frame,我们需要使用 pandas 包中的 DataFrame 方法。

      有不同的方式来执行上述操作。 (假设 Pandas 被导入为pd

      1. pandas.DataFrame({'Column_Name':Column_Data})
      • 列名:字符串
      • Column_Data:列表形式
      1.  Data = pandas.DataFrame(Column_Data)`
         Data.columns = ['Column_Name']
        

      所以,对于上面提到的问题,代码sn-p是

      import pandas as pd
      
      Content = ['Thanks You',
                 'Its fine no problem',
                 'Are you sure']
      
      Data = pd.DataFrame({'Text': Content})
      

      【讨论】:

        猜你喜欢
        • 2021-03-22
        • 2020-09-02
        • 2021-01-22
        • 2021-02-09
        • 2023-03-21
        • 2018-03-25
        • 1970-01-01
        • 1970-01-01
        • 2018-05-17
        相关资源
        最近更新 更多