1
2
|
import pandas as pd
import numpy as np
|
创建DataFrame对象
1
2
3
|
# 创建DataFrame对象
df = pd.DataFrame([ 1 , 2 , 3 , 4 , 5 ], columns = [ 'cols' ], index = [ 'a' , 'b' , 'c' , 'd' , 'e' ])
print df
|
1
2
3
4
5
6
|
cols
a 1
b 2
c 3
d 4
e 5
|
1
2
|
df2 = pd.DataFrame([[ 1 , 2 , 3 ],[ 4 , 5 , 6 ]], columns = [ 'col1' , 'col2' , 'col3' ], index = [ 'a' , 'b' ])
print df2
|
1
2
3
|
col1 col2 col3
a 1 2 3
b 4 5 6
|
1
2
|
df3 = pd.DataFrame(np.array([[ 1 , 2 ],[ 3 , 4 ]]), columns = [ 'col1' , 'col2' ], index = [ 'a' , 'b' ])
print df3
|
1
2
3
|
col1 col2
a 1 2
b 3 4
|
1
2
|
df4 = pd.DataFrame({ 'col1' :[ 1 , 3 ], 'col2' :[ 2 , 4 ]},index = [ 'a' , 'b' ])
print df4
|
1
2
3
|
col1 col2
a 1 2
b 3 4
|
创建DataFrame对象的数据可以为列表,数组和字典,列名和索引为列表对象
基本操作
1
2
|
# DataFrame对象的基本操作
df2.index
|
1
|
Index([u 'a' , u 'b' ], dtype = 'object' )
|
1
|
df2.columns
|
1
|
Index([u 'col1' , u 'col2' , u 'col3' ], dtype = 'object' )
|
1
2
3
4
|
# 根据索引查看数据
df2.loc[ 'a' ]
# 索引为a这一行的数据
# df2.iloc[0] 跟上面的操作等价,一个是根据索引名,一个是根据数字索引访问数据
|
1
2
3
4
|
col1 1
col2 2
col3 3
Name: a, dtype: int64
|
1
|
print df2.loc[[ 'a' , 'b' ]] # 访问多行数据,索引参数为一个列表对象
|
1
2
3
|
col1 col2 col3
a 1 2 3
b 4 5 6
|
1
|
print df.loc[df.index[ 1 : 3 ]]
|
1
2
3
|
cols
b 2
c 3
|
1
2
|
# 访问列数据
print df2[[ 'col1' , 'col3' ]]
|
1
2
3
|
col1 col3
a 1 3
b 4 6
|
计算
1
2
3
|
# DataFrame元素求和
# 默认是对每列元素求和
print df2. sum ()
|
1
2
3
4
|
col1 5
col2 7
col3 9
dtype: int64
|
1
2
|
# 行求和
print df2. sum ( 1 )
|
1
2
3
|
a 6
b 15
dtype: int64
|
1
2
|
# 对每个元素乘以2
print df2. apply ( lambda x:x * 2 )
|
1
2
3
|
col1 col2 col3
a 2 4 6
b 8 10 12
|
1
2
|
# 对每个元素求平方(支持ndarray一样的向量化操作)
print df2 * * 2
|
1
2
3
|
col1 col2 col3
a 1 4 9
b 16 25 36
|
1
2
3
4
|
列扩充
# 对DataFrame对象进行列扩充
df2[ 'col4' ] = [ 'cnn' , 'rnn' ]
print df2
|
1
2
3
|
col1 col2 col3 col4
a 1 2 3 cnn
b 4 5 6 rnn
|
1
2
3
|
# 也可以通过一个新的DataFrame对象来定义一个新列,索引自动对应
df2[ 'col5' ] = pd.DataFrame([ 'MachineLearning' , 'DeepLearning' ],index = [ 'a' , 'b' ])
print df2
|
1
2
3
|
col1 col2 col3 col4 col5
a 1 2 3 cnn MachineLearning
b 4 5 6 rnn DeepLearning
|
行扩充
1
2
|
# 行进行扩充
print df2.append(pd.DataFrame({ 'col1' : 7 , 'col2' : 8 , 'col3' : 9 , 'col4' : 'rcnn' , 'col5' : 'ReinforcementLearning' },index = [ 'c' ]))
|
1
2
3
4
|
col1 col2 col3 col4 col5
a 1 2 3 cnn MachineLearning
b 4 5 6 rnn DeepLearning
c 7 8 9 rcnn ReinforcementLearning
|
注意!
1
2
|
# 如果在进行 行扩充时候没有,指定index的参数,索引会被数字取代
print df2.append({ 'col1' : 10 , 'col2' : 11 , 'col3' : 12 , 'col4' : 'frnn' , 'col5' : 'DRL' },ignore_index = True )
|
1
2
3
4
|
col1 col2 col3 col4 col5
0 1 2 3 cnn MachineLearning
1 4 5 6 rnn DeepLearning
2 10 11 12 frnn DRL
|
1
2
3
|
# 以上的行扩充,并没有真正修改,df2这个DataFrame对象,除非
df2 = df2.append(pd.DataFrame({ 'col1' : 7 , 'col2' : 8 , 'col3' : 9 , 'col4' : 'rcnn' , 'col5' : 'ReinforcementLearning' },index = [ 'c' ]))
print df2
|
1
2
3
4
5
|
col1 col2 col3 col4 col5
a 1 2 3 cnn MachineLearning
b 4 5 6 rnn DeepLearning
c 7 8 9 rcnn ReinforcementLearning
c 7 8 9 rcnn ReinforcementLearning
|
1
|
print df2.loc[ 'c' ]
|
1
2
3
|
col1 col2 col3 col4 col5
c 7 8 9 rcnn ReinforcementLearning
c 7 8 9 rcnn ReinforcementLearning
|
DataFrame对象的合并
1
2
3
|
# DataFrame 对象的合并
df_a = pd.DataFrame([ 'wang' , 'jing' , 'hui' , 'is' , 'a' , 'master' ],columns = [ 'col6' ],index = [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' ])
print df_a
|
1
2
3
4
5
6
7
|
col6
a wang
b jing
c hui
d is
e a
f master
|
1
2
3
|
# 默认合并,只保留dfb中的全部索引
dfb = pd.DataFrame([ 1 , 2 , 4 , 5 , 6 , 7 ],columns = [ 'col1' ],index = [ 'a' , 'b' , 'c' , 'd' , 'f' , 'g' ])
print dfb.join(df_a)
|
1
2
3
4
5
6
7
|
col1 col6
a 1 wang
b 2 jing
c 4 hui
d 5 is
f 6 master
g 7 NaN
|
1
2
3
|
# 默认合并之接受索引已经存在的值
# 通过指定参数 how,指定合并的方式
print dfb.join(df_a,how = 'inner' ) # 合并两个DataFrame对象的交集
|
1
2
3
4
5
6
|
col1 col6
a 1 wang
b 2 jing
c 4 hui
d 5 is
f 6 master
|
1
2
|
# 合并两个DataFrame对象的并集
print dfb.join(df_a,how = 'outer' )
|
1
2
3
4
5
6
7
8
|
col1 col6
a 1.0 wang
b 2.0 jing
c 4.0 hui
d 5.0 is
e NaN a
f 6.0 master
g 7.0 NaN
|
以上这篇Pandas:DataFrame对象的基础操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/u014281392/article/details/75331570