这篇主要比较R语言的data.talbe和python的pandas操作数据框的形式, 学习两者的异同点, 加深理解两者的使用方法。
1. data.table VS pandas
这里使用R语言的data.tablet包和python的pandas进行对比.
主要分为三部分:
- 新建数据库
- 行列选择
- 行列筛选
2. data.table操作数据框
data.table介绍:

使用R语言, 通过data.table创建数据框.
library(data.table)
set.seed(123)
DT <- data.table(V1=c(1,2),V2=c("A","B","C"),V3=round(rnorm(4),4), V4=1:12)

2.1 行选择
选择单行
# 行选择
DT[2]
DT[2,] # 同上

选择多行
DT[3:5]
DT[3:5,]
选择列
DT[,2]

可以使用.号, 返回数据框
DT[,.(V2)] # 同上

或者使用list(), 等同于.()
DT[,list(V2)]

2.2 行列筛选
选择V2等于A的列
DT[V2=="A"]

也可以使用下面这种形式
DT[V2=="A",]

如果选择V2等于A或者等于B的列
DT[V2 == "A"|V2=="B"]

也可以使用%in%进行多条件选择
DT[V2 %in% c("A","B")]
新建一列V5
DT[,V5:=V3*V4]
DT

2.3 使用fwrite保存数据
fwrite(DT,"DT.csv")
3. pandas操作数据框
读取数据
import pandas as pd
df = pd.read_csv("DT.csv")
df

3.1 行列选择

选择第一行, 需要给出区间df[0]报错, 要用df[0:1]
df[0:1] # 如果直接使用, 需要给出区间

也可以根据loc进行提取
# loc 根据行名
df.loc[1] # 注意, python从0开始
也可以根据iloc进行提取
# iloc 根据行号
df.iloc[1]
注意, iloc是根据行号, loc是根据行名
选择多行
df[3:6] # 3包括, 6不包括
同上:
df.loc[3:5]

3.2 pandas选择列
df["V2"]

也可以使用列数, 使用iloc
df.iloc[:,1:2]

如果使用多个列明, 要用[]
df[["V1","V2"]] # 用两个[][]

效果同上。
df.iloc[:,0:2]

3.3 pandas行列筛选
df[df['V2']=="A"]
或者:
df[df['V2']=="A"]

多条件筛选
# 麻烦style: (df['V2']=='A')|(df['V2']=='B')
df[(df['V2']=='A')|(df['V2']=='B')]

也可以使用isin进行操作:
# 使用.V2.isin()进行多条件筛选
df[df.V2.isin(["A","B"])]
# 使用[].isin也可以
df[df['V2'].isin(["A","B"])]

创建新列V5
df.V5 = df.V3*df.V4
df

3.4 pandas保存文件
如果是R的思维:
write.csv(object, "file.csv")
但是pandas的风格是
object.to_csv("file.csv")正确有效的代码:
df.to_csv("df.csv",index=0) # 对象.to_csv, 不是pd.write(df,"df.csv")!!!
















