python_DF & LIST 互转

DataFrame to list

方法1:

将DF的某列转换成列表,直接将DF的某列的值转换,df1[‘colums_name’].values.tolist()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
df = pd.read_excel('DHAC.xls', sheet_name='销售单')  # 读文件
a = df['DHAC编号'].values.tolist()#将DF的某列的值转换成列表。注意.values
b = df['订单号'].values.tolist()
c = df['订单号'].drop_duplicates().values.tolist()# 将某列的值去重并转成列表

print(''' a的类型是:{}
a的序列有:{} 个
c的序列有:{} 个
'''.format(type(a), len(a), len(c)))

---->
a的类型是:<class 'list'>
a的序列有:1846
c的序列有:130

方法2:

直接将整个DF转成列表. df1.values.tolist()

1
2
3
4
5
6
7
8
9
10
a=df.values.tolist()

print(''' df的类型是:{},长度是: {}
a的类型是:{} ,长度是: {}
'''.format(type(df), len(df),type(a), len(a)))

--->
df的类型是:<class 'pandas.core.frame.DataFrame'>,长度是: 1846
a的类型是:<class 'list'> ,长度是: 1846

方法3:

用list的函数list强制转换,只对单列有效. list(df1[‘columns_name’])

1
2
3
4
5
6
7
8
9
a=list(df['订单号'])
print(''' df的类型是:{},长度是: {}
a的类型是:{} ,长度是: {}
'''.format(type(df), len(df),type(a), len(a)))

---->
df的类型是:<class 'pandas.core.frame.DataFrame'>,长度是: 1846
a的类型是:<class 'list'> ,长度是: 1846

list to DataFrme

将1个列表转成DF,列表中没有子列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
df = pd.read_excel('dh.xls', sheet_name='销售单')  # 读文件
a = df['DHAC编号'].values.tolist()#将DF的某列的值转换成列表。注意.values
df1=pd.DataFrame(a,columns=['DHAC编号'])#将1个列表转换成DF,列表中没有子列表!
print('这里是列表的0序列:','\n',a[0])
print()
print('这里是表框的头两行','\n',df1.head(2))

--->
这里是列表的0序列:
DH5DS508

这里是表框的头两行
DHAC编号
0 DH5DS508
1 DH5TP505

将两个没有子列表的列表转换成DF.

先将两个列表组成字典,并设置KEY. 然后转成DF,不再需要设置colums的值

1
2
3
4
5
6
7
8
9
10
11
df = pd.read_excel('dh.xls', sheet_name='销售单')  # 读文件
a = df['DHAC编号'].values.tolist()#将DF的某列的值转换成列表。注意.values
b = df['订单号'].values.tolist()
k={'编号':a ,'订单':b}
df1=pd.DataFrame(k)
print('这里是表框的头两行','\n',df1.head(2))
--->
这里是表框的头两行
编号 订单
0 DH5DS508 9JD7113
1 DH5TP505 9JD7113

将由子列表组成的列表转换成DF.

输入的列标题个数必须与子列表中的元素个数匹配。

1
2
3
4
5
6
7
8
9
10
df = pd.read_excel('dh.xls', sheet_name='销售单')  # 读文件
c= df.values.tolist()#将DF转成list
df2=pd.DataFrame(c,columns=['日期','编号','订单', '规格' , '数量'])

print('这里是表框的头两行','\n',df2.head(2))
--->
这里是表框的头两行
日期 编号 订单 规格 数量
0 2017-01-13 9JD7113 DH5DS508 D3.95*100 6.0
1 2017-01-13 9JD7113 DH5TP505 302822841 10.0