創建dataframe
df = pd.DataFrame({'month':[1,4,7,10], 'year':[2012,2014,2014,2014], 'sale':[55,40,84,31]})
month sale year
0 1 55 2012
1 4 40 2014
2 7 84 2014
3 10 31 2014
dataframe 增加一行
dataframe中行爲index,列爲columns
要增加一行,首先要拿到當前index的最大數值
index的數據類型爲Series
先拿到某一列,df[‘year’] 和 df.year是一樣的
當前最大index數爲
df.year.size
4
在最後增加一行
2種方法一樣
df.loc[df.year.size] = 3,4,5
df.loc[df.year.size] = [3,4,5]
month sale year
0 1 55 2012
1 4 40 2014
2 7 84 2014
3 10 31 2014
4 3 4 5
但如果是空的dataframe,由於不能loc row的值,所以不能用上面的方法,可以這樣
例如
df.append({'index_id':'demo_id','index_name':'demo_name'}, ignore_index=True)
dataframe 刪除一行
刪除特定行:
df.drop([2]) # 刪除第二行
df.drop(2) # 和上面的效果一樣
df.drop([1,21]) #刪除第一行和第21行,這裏的數字都是index編號,不是真正行數
刪除範圍內的行
df.drop(range(1,20)) # 刪除第一行到第19行
dataframe 查詢 – query 和 eval
query
eval
previous_name = 'hi'
pd.eval('df.index_name == previous_name')
原來的df爲
index_id index_name
0 index_id index_name
1 index_id index_name
2 index_id index_name
3 index_id index_name
4 index_id index_name
5 index_id index_name
6 index_id index_name
7 index_id index_name
8 index_id index_name
9 index_id index_name
10 index_id index_name
11 index_id index_name
12 index_id index_name
13 index_id index_name
14 96bc91c7-9f07-409e-9e81-32c27fce7d92 astri_index
15 6fcd5d1f-ea23-4d43-b1a3-b044f1a88334 hi
16 fe0bb37e-3d95-42f8-bbb5-b06ea611c4dd 000
查詢後代碼輸出結果爲
0 False
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
10 False
11 False
12 False
13 False
14 False
15 True
16 False
Name: index_name, dtype: boo
dataframe replace
previous_name = 'hi'
new_name = '000'
df = df.replace(previous_name, new_name)
按值刪除某行 delete a row by value
dataframe.drop()
target_index = '000'
df = df.drop(df[df.index_name == target_index].index)
# or df.query('index_name=="hi"')
該表達式使用query也是一樣的效果
dataframe update
根據value找到這行的index,然後構造一個新的series,update給原來的dataframe
index = df[df.index_id == index_id].index[0]
new_column = pd.Series(new_name, name='index_name', index=[index])
df.update(new_column)