-
删除列/行
df.drop('总收入', axis=1) # 列
df = df.drop([223, 224, 225]) # 行
-
日期做索引
df.index = pd.DatetimeIndex(df['日期'])
层次化索引
df_1 = pd.DataFrame(df.drop('日期', axis=1).values, index=[date_index, row_index], columns=columns)
-
Empty 'DataFrame': no numeric data to plot
diversity = diversity.astype(float) -
大量数据,分块处理
import pandas as pd
chunksize = 10 ** 8
for chunk in pd.read_csv(filename, chunksize=chunksize):
process(chunk)
-
df 增加多列
def get_io_and_pw(row):
d_link = info_book(row['original_title'], row['author_names']) or {}
return d_link.get('d_io'), d_link.get('d_pw')
df_test['d_io'], df_test['d_pw'] = zip(*df_test.apply(get_io_and_pw, axis=1))
-
pandas 时间格式
transactions['date_formatted']=pd.to_datetime(transactions['date'], format='%d.%m.%Y')
附录:format相关
代码 说明
%Y 4位数的年
%y 2位数的年
%m 2位数的月[01,12]
%d 2位数的日[01,31]
%H 时(24小时制)[00,23]
%l 时(12小时制)[01,12]
%M 2位数的分[00,59]
%S 秒[00,61]有闰秒的存在
%w 用整数表示的星期几[0(星期天),6]
%F %Y-%m-%d简写形式例如,2017-06-27
%D %m/%d/%y简写形式
-
一个时间文本序列
s = pd.Series(['2016-01-31 10:18:04', '2016-02-29 12:18:09'])
s
'''
0 2016-01-31 10:18:04
1 2016-02-29 12:18:09
dtype: object
'''
-
纳秒级
s.astype('datetime64[ns]')
'''
0 2016-01-31 10:18:04
1 2016-02-29 12:18:09
dtype: datetime64[ns]
'''
-
日级
s.astype('datetime64[D]')
'''
0 2016-01-31
1 2016-02-29
dtype: datetime64[ns]
'''
-
小时级
s.astype('datetime64[h]')
'''
0 2016-01-31 10:00:00
1 2016-02-29 12:00:00
dtype: datetime64[ns]
'''
-
秒级
s.astype('datetime64[s]')
'''
0 2016-01-31 10:18:04
1 2016-02-29 12:18:09
dtype: datetime64[ns]
'''
-
月级,当月第一天
s.astype('datetime64[M]')
'''
0 2016-01-01
1 2016-02-01
dtype: datetime64[ns]
'''
-
年级,当年第一天
s.astype('datetime64[Y]')
'''
0 2016-01-01
1 2016-01-01
dtype: datetime64[ns]
'''
-
周级,当周周四(原因如下)
s.astype('datetime64[W]')
'''
0 2016-01-28
1 2016-02-25
dtype: datetime64[ns]
'''