按照行数和列数select:
df.iloc[3]第三行
df.iloc[2:4] 第二到三行
df.iloc[:2,:3]0到1行,0到2列
df.iloc[[1,3,5],[1,3]]1,3,5行,1,3列
df[0]按列名取某一列
pandas.read_csv默认以,为分割符读文件
pandas.read_table默认以Tab为分隔符读取文件,可以sep指定分割符
df.columns所有列名
df.index所有行索引
df.loc[3]第三行
df.iloc[3,4] /df.iat[3,4]效率更高第三行第四个元素
df.drop_duplicates(['user_id_y']) 去掉某列的重复行
groupby 聚合之后 reset_index()重置索引
data.drop_duplicates(['k2'])
一、当每列已有column name时,用 df [ 'a' ] 就能选取出一整列数据。如果你知道column names 和index,且两者都很好输入,可以选择 .loc
由于这边我们没有命名index,所以是DataFrame自动赋予的,为数字0-9
二、如果我们嫌column name太长了,输入不方便,有或者index是一列时间序列,更不好输入,那就可以选择 .iloc了。这边的 i 我觉得代表index,较好记点。
iloc 使得我们可以对column使用slice(切片)的方法对数据进行选取。
三、.ix 的功能就更强大了,它允许我们混合使用下标和名称进行选取。 可以说它涵盖了前面所有的用法。基本上把前面的都换成df.ix 都能成功,但是有一点,就是
df.ix [ [ ..1.. ], [..2..] ], 1框内必须统一,必须同时是下标或者名称,2框也一样。 BTW, 1框是用来指定row,2框是指定column, 当然上面所有的取数方法都是这个规则。
.apply(func,axis=1)是一行一行给元素
.apply(func,axis=0)是一列一列给元素
返回新列
判断某列是否有某个元素
t ='7739004195693774975'
topic[topic[1].astype(str).str.contains(t)]
一层方括号question_train['words']是Series,两层question_train[['words']]是dataframe
pd.Series(6,[5,6,8])
5 6
6 6
8 6
question_distincttopic =pd.concat([pd.Series(row[0],row[1].split(','))for _,row in question_topic.iterrows()]).reset_index()
将row[1]的字符串按,分隔,分到不同的行中
Series相当于字典,可以用list初始化
l =[1,2,3,1,7,2,3]
>>> pd.Series(l)
abc.value_counts()//统计出现次数
abc[abc>3]筛选出现次数大于3的
abc[idx]仍然是按照index取值
将时间戳转化为可见时间的格式
ts =pd.to_datetime(df['date'],unit='s')
ts.astimezone('Asia/Shanghai')
根据时间戳获得具体的时间
time.asctime(time.localtime(secs))
转成特定格式
time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1492513200))
将可见时间格式转化为时间戳
time.mktime(time.strptime('2017-2-18 18:00:00', '%Y-%m-%d %H:%M:%S'))