1.可以用chunksize参数分成文件块(部分行),读取的返回值将会是一个可迭代对象TextFileReade。
2.可以用usecols = [‘loadingOrder’]参数只读取部分列进行分开处理。
norepeat_df = df.drop_duplicates(subset=[‘A_ID’, ‘B_ID’], keep=‘first’)
当keep=False时,就是去掉所有的重复行
当keep=‘first’时,就是保留第一次出现的重复行
当keep=’last’时就是保留最后一次出现的重复行。
1.根据index或者cols名字直接选择
2.根据数字索引
列
abcol = df.iloc[:, [0,1]] ##wayIII, 利用iloc
abcol = df.iloc[:, [0:1]] ##wayIV, 利用iloc
行
r1 = df[0:1]
1.列值判断
df1.loc[(df1[0]=='js') & (df1[2]=='cz'),[1,3]]=[588,688]
对列名为1和3的列根据0和2的条件赋予不同值
2.行索引
all_data['direction'].iloc[i] = 1
DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)
1)labels和axis 的组合
2)index或columns直接指定要删除的行或列
df = df[['user_id','book_id','rating','mark_date']] # 调整列顺序
all_data.sort_values(['loadingOrder','timestamp'],inplace=True)
1.判断它们不能直接用等号
df = df[pd.notnull(df['a'])]
df = df[~np.isnan(df['a'])]
2.删除nan所在的行/列
可以用df.dropna(axis=0,how='all')
how可以是all或者any分别处理全为nan或出现nan
3.填充
df.fillna({‘column_name_A’: 0,‘column_name_B’: 100})
groupby是最为常用的操作之一,但是其用法繁多,需要好好熟悉运用。
port_data = port_data.groupby('TRANS_NODE_NAME')['LONGITUDE','LATITUDE'].mean().reset_index()
data[['price','quantity']].agg(['sum','mean'])
单列
df['col2'] = df['col1'].map(lambda x: x**2)
多列
df['col3'] = df.apply(lambda x: x['col1'] + 2 * x['col2'], axis=1)
datetime以毫秒形式存储日期和时间
1.pd.to_datetime
参考链接.
该函数功能十分强大复杂,可以用时间戳结合起始时间生成实际时间,也可以根据指定格式或者自动推断格式把字符串变成datetime对象。
unit为数字代表的单位是秒或者小时,origin是起始时间
2.从字符串生成
datetime.strptime(x,'%Y-%m-%d')
与之对应的有从datetime生成字符串的函数
datetime.strftime('%Y/%m/%d %H:%M:%S')
两个Datetime格式相减会得到一个Timedelta类型变量
Timedelta只有天,秒,毫秒3个可以访问。
Timedelta obj.days(seconds,microseconds)