pandas用法速查:
​​​ https://www.toutiao.com/i6758024966521750030/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1&timestamp=1573606334&app=news_article&utm_source=weixin&utm_medium=toutiao_android&req_id=2019111308521401002607721726B20283&group_id=6758024966521750030​

索引数据

loc:通过行标签索引数据

iloc:通过行号索引行数据

ix:通过行标签或行号索引数据(基于loc和iloc的混合)被废弃

python之pandas基本操作_数据

#设置实验数据
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = [0,1]
columns=['a','b','c']
#加载数据集
df = pd.DataFrame(data=data, index=index, columns=columns)
#显示前几行
df.head
# 1. loc——通过行标签索引行数据,查看某行
df.loc[1]
df.loc[0]


# 1.2 loc[‘d’]表示索引的是第’d’行(index 是字符)
import pandas as pd
data = [[1,2,3],[4,5,6]]
index = ['d','e']
columns=['a','b','c']
df = pd.DataFrame(data=data, index=index, columns=columns)
#更改行标签 行索引
#接下来是把行标签[0, 1, 2]改成['a', 'b', 'c'],则成这样了
df.index = ['a','b','c']
#同样地,把列标签[0, 1, 2, 3]改成['A', 'B, 'C', 'D'],则成这样了\
#更改列标签
df.columns = ['A','B','C','D']

#查看一行数据
df.loc['d']
# 1.4 loc可以获取多行数据
df.loc['d':]
# 1.5 loc扩展——索引某行某列 查找某行某列
df.loc['d',['b','c']]

# 1.6 loc扩展——索引某列 查询C列
df.loc[:,['c']]

# 2. iloc——通过行号获取行数据
# 2.1 想要获取哪一行就输入该行数字
df.iloc[1]
# 2.3 同样通过行号可以索引多行 查找多行
df.iloc[0:]
#查找 第0列和第3列
df.iloc[:,[0,3]]
#选取某几行数据 前几行数据
df.iloc[0:3]
查出前5行
dfoff.iloc[:5]
#输出第六列的前三行
dfoff.iloc[:3,6]
#取出中间某几列
train_orignal_01=train_orignal.iloc[:,3:8]

可参考此文章

############################################################
#日期类操作
date(int(dfoff['Date_received'].iloc[1][0:4]), int(dfoff['Date_received'].iloc[1][4:6]),
#根据日期来取星期
int(dfoff['Date_received'].iloc[1][6:8])).weekday()+1
#日期格式转换
dfoff.iloc[:1,6]
# 20160217.0
pd.to_datetime(dfoff.iloc[:1,6], format='%Y%m%d')
#2016-02-17
#求取日期差
pd.to_datetime(dfoff.iloc[:1,6], format='%Y%m%d') - pd.to_datetime(dfoff.iloc[1:2,5], format='%Y%m%d')
# 最后是这种样子 '2016-02-17' - '2016-05-28'

#判断是否大于 15天
td = pd.to_datetime(row['Date'], format='%Y%m%d') - pd.to_datetime(row['Date_received'], format='%Y%m%d')
td <= pd.Timedelta(15, 'D')

###########################################################
#函数应用
# weekday_type : 周六和周日为1,其他为0 lambda 不断循环
dfoff['weekday_type'] = dfoff['weekday'].apply(lambda x: 1 if x in [6,7] else 0)
#if判断实现
def getWeekday(row):
if row == 'null':
return row
else:
return date(int(row[0:4]), int(row[4:6]), int(row[6:8])).weekday() + 1

dfoff['weekday'] = dfoff['Date_received'].astype(str).apply(getWeekday)

#数据复制 筛选复制
df = dfoff[dfoff['label'] != -1].copy()