pandas Dataframe的靈活使用

創建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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章