一文弄懂10大Pandas的索引
今天給大家?guī)?lái)一篇關(guān)于Pandas的基本文章:10種你必須掌握的Pandas索引。
索引在我們的日常生活中其實(shí)是很常見的,就像:
- 一本書有自己的目錄和具體的章節(jié),當(dāng)我們想找某個(gè)知識(shí)點(diǎn),翻到對(duì)應(yīng)的章節(jié)即可;
- 也像圖書館中的書籍被分類成文史類、技術(shù)類、小說(shuō)類等,再加上書籍的編號(hào),很快就能夠找到我們想要的書籍。
- 外出吃飯點(diǎn)菜的菜單,從主食類、飲料/湯類、涼菜類等,到具體的菜名等
上面不同的常用都可以看做是一個(gè)具體的索引應(yīng)用。
因此,基于實(shí)際需求出發(fā)創(chuàng)建的索引對(duì)我們的業(yè)務(wù)工作具有很強(qiáng)的指導(dǎo)意義。在Pandas中創(chuàng)建合適的索引則能夠方便我們的數(shù)據(jù)處理工作。
官網(wǎng)學(xué)習(xí)地址:https://pandas.pydata.org/docs/reference/api/pandas.Index.html
下面通過(guò)實(shí)際案例來(lái)介紹Pandas中常見的10種索引,以及如何創(chuàng)建它們。
pd.Index
Index是Pandas中的常見索引函數(shù),通過(guò)它能夠構(gòu)建各種類型的索引,其語(yǔ)法為:
pandas.Index( data=None, # 一維數(shù)組或者類似數(shù)組結(jié)構(gòu)的數(shù)據(jù) dtype=None, # NumPy數(shù)據(jù)類型(默認(rèn)值:對(duì)象) copy=False, # 是否生成副本 name=None, # 索引名字 tupleize_cols=True, # 如果為True,則盡可能嘗試創(chuàng)建 MultiIndex **kwargs )
導(dǎo)入兩個(gè)必需的庫(kù):
import pandas as pd import numpy as np
默認(rèn)的數(shù)據(jù)類型是int64
In [2]:
# 通過(guò)列表來(lái)創(chuàng)建 pd.Index([1,2,3,4])
Out[2]:
Int64Index([1, 2, 3, 4], dtype='int64')
在創(chuàng)建的時(shí)候,還能夠直接指定數(shù)據(jù)類型:
In [3]:
# 指定索引的數(shù)據(jù)類型 pd.Index([1,2,3,4], dtype="float64")
Out[3]:
Float64Index([1.0, 2.0, 3.0, 4.0], dtype='float64')
在創(chuàng)建的時(shí)候指定名稱name和數(shù)據(jù)類型dtype:
In [4]:
# 指定類型和名稱 pd.Index([1,2,3,4], dtype="float64", name="Peter")
Out[4]:
Float64Index([1.0, 2.0, 3.0, 4.0], dtype='float64', name='Peter')
In [5]:
# 使用list函數(shù)生成列表來(lái)創(chuàng)建 pd.Index(list("ABCD"))
Out[5]:
Index(['A', 'B', 'C', 'D'], dtype='object')
使用元組來(lái)進(jìn)行創(chuàng)建:
In [6]:
# 使用元組來(lái)創(chuàng)建 pd.Index(("a","b","c","d"))
Out[6]:
Index(['a', 'b', 'c', 'd'], dtype='object')
使用集合來(lái)進(jìn)行創(chuàng)建。集合本身是無(wú)序的,所以最終的結(jié)果并不一定是按照給定的元素順序:
In [7]:
# 使用集合來(lái)創(chuàng)建,集合本身是無(wú)序的 pd.Index({"x","y","z"})
Out[7]:
Index(['z', 'x', 'y'], dtype='object')
pd.RangeIndex
生成一個(gè)區(qū)間內(nèi)的索引,主要是基于Python的range函數(shù),其語(yǔ)法為:
pandas.RangeIndex( start=None, # 起始值,默認(rèn)為0 stop=None, # 終止值 step=None, # 步長(zhǎng),默認(rèn)為1 dtype=None, # 類型 copy=False, # 是否生成副本 name=None) # 名稱
下面通過(guò)多個(gè)例子來(lái)講解:
In [8]:
pd.RangeIndex(8) # 默認(rèn)start是0,步長(zhǎng)是1
默認(rèn)結(jié)果中起始值是0,結(jié)束值是8(不包含),步長(zhǎng)是1:
Out[8]:
RangeIndex(start=0, stop=8, step=1)
In [9]:
pd.RangeIndex(0,8) # 指定start和stop
Out[9]:
RangeIndex(start=0, stop=8, step=1)
改變步長(zhǎng)為2:
In [10]:
pd.RangeIndex(0,8,2)
Out[10]:
RangeIndex(start=0, stop=8, step=2)
In [11]:
list(pd.RangeIndex(0,8,2))
將結(jié)果用list顯示出來(lái),沒(méi)有包含stop的值8:
Out[11]:
[0, 2, 4, 6]
下面的案例中將步長(zhǎng)改成-1:
In [12]:
pd.RangeIndex(8,0,-1)
Out[12]:
RangeIndex(start=8, stop=0, step=-1)
In [13]:
list(pd.RangeIndex(8,0,-1))
Out[13]:
[8, 7, 6, 5, 4, 3, 2, 1] # 結(jié)果中不包含0
pd.Int64Index
指定數(shù)據(jù)類型是int64整型
pandas.Int64Index( data=None, # 生成索引的數(shù)據(jù) dtype=None, # 索引類型,默認(rèn)是int64 copy=False, # 是否生成副本 name=None) # 使用名稱
In [14]:
pd.Int64Index([1,2,3,4])
Out[14]:
Int64Index([1, 2, 3, 4], dtype='int64')
In [15]:
pd.Int64Index([1,2.0,3,4]) # 強(qiáng)制轉(zhuǎn)成int64類型
Out[15]:
Int64Index([1, 2, 3, 4], dtype='int64')
In [16]:
pd.Int64Index([1,2,3,4],name="Peter")
Out[16]:
Int64Index([1, 2, 3, 4], dtype='int64', name='Peter')
如果在數(shù)據(jù)中包含小數(shù)則會(huì)報(bào)錯(cuò):
In [17]:
# pd.Int64Index([1,2,3,4.4]) # 出現(xiàn)小數(shù)則報(bào)錯(cuò)
pd.UInt64Index
數(shù)據(jù)類型是無(wú)符號(hào)的UInt64
pandas.UInt64Index( data=None, dtype=None, copy=False, name=None )
In [18]:
pd.UInt64Index([1, 2, 3, 4])
Out[18]:
UInt64Index([1, 2, 3, 4], dtype='uint64')
In [19]:
pd.UInt64Index([1, 2, 3, 4],name="Tom") # 指定名字
Out[19]:
UInt64Index([1, 2, 3, 4], dtype='uint64', name='Tom')
In [20]:
pd.UInt64Index([1, 2.0, 3, 4],name="Tom")
Out[20]:
UInt64Index([1, 2, 3, 4], dtype='uint64', name='Tom')
# 存在小數(shù)則報(bào)錯(cuò) pd.UInt64Index([1, 2.4, 3, 4],name="Tom")
pd.Float64Index
數(shù)據(jù)類型是Float64位的浮點(diǎn)型,允許小數(shù)出現(xiàn):
pandas.Float64Index( data=None, # 數(shù)據(jù) dtype=None, # 類型 copy=False, # 是否生成副本 name=None # 索引名字 )
In [22]:
pd.Float64Index([1, 2, 3, 4])
Out[22]:
Float64Index([1.0, 2.0, 3.0, 4.0], dtype='float64')
In [23]:
pd.Float64Index([1.5, 2.4, 3.7, 4.9])
Out[23]:
Float64Index([1.5, 2.4, 3.7, 4.9], dtype='float64')
In [24]:
pd.Float64Index([1.5, 2.4, 3.7, 4.9],name="peter")
Out[24]:
Float64Index([1.5, 2.4, 3.7, 4.9], dtype='float64', name='peter')
注意:在Pandas1.4.0的版本中,上面3個(gè)函數(shù)全部統(tǒng)一成了pd.NumericIndex方法。
pd.IntervalIndex
pd.IntervalIndex( data, # 待生成索引的數(shù)據(jù)(一維) closed=None, # 區(qū)間的哪邊是關(guān)閉狀態(tài),{‘left', ‘right', ‘both', ‘neither'}, default ‘right' dtype=None, # 數(shù)據(jù)類型 copy=False, # 生成副本 name=None, # 索引的名字 verify_integrity=True # 判斷是否符合 )
新的 IntervalIndex 通常使用interval_range()
函數(shù)來(lái)進(jìn)行構(gòu)造,基本用法:
In [24]:
pd.interval_range(start=0, end=6)
Out[24]:
IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5], (5, 6]], closed='right', # 默認(rèn)情況下右邊是關(guān)閉的 dtype='interval[int64]')
In [25]:
pd.interval_range(start=0, end=6, closed="neither") # 兩邊都不關(guān)閉
Out[25]:
IntervalIndex([(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)], closed='neither', dtype='interval[int64]')
In [26]:
pd.interval_range(start=0, end=6, closed="both") # 兩邊都關(guān)閉
Out[26]:
IntervalIndex([[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6]], closed='both', dtype='interval[int64]')
In [27]:
pd.interval_range(start=0, end=6, closed="left") # 左邊關(guān)閉
Out[27]:
IntervalIndex([[0, 1), [1, 2), [2, 3), [3, 4), [4, 5), [5, 6)], closed='left', dtype='interval[int64]')
In [28]:
pd.interval_range(start=0, end=6, name="peter")
Out[28]:
IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5], (5, 6]], closed='right', name='peter', dtype='interval[int64]')
pd.CategoricalIndex
pandas.CategoricalIndex( data=None, # 數(shù)據(jù) categories=None, # 分類的數(shù)據(jù) ordered=None, # 是否排序 dtype=None, # 數(shù)據(jù)類型 copy=False, # 副本 name=None) # 名字
在下面的例子中我們以一批衣服的尺碼作為模擬數(shù)據(jù):
In [29]:
# 指定數(shù)據(jù) c1 = pd.CategoricalIndex(["S","M","L","XS","M","L","S","M","L","XL"]) c1
Out[29]:
CategoricalIndex( # 數(shù)據(jù) ['S', 'M', 'L', 'XS', 'M', 'L', 'S', 'M', 'L', 'XL'], # 出現(xiàn)的不同元素 categories=['L', 'M', 'S', 'XL', 'XS'], # 默認(rèn)不排序 ordered=False, # 數(shù)據(jù)類型 dtype='category' )
In [30]:
c2 = pd.CategoricalIndex( ["S","M","L","XS","M","L","S","M","L","XL"], # 指定分類的數(shù)據(jù) categories=["XS","S","M","L","XL"] ) c2
Out[30]:
CategoricalIndex( ['S', 'M', 'L', 'XS', 'M', 'L', 'S', 'M', 'L', 'XL'], categories=['XS', 'S', 'M', 'L', 'XL'], ordered=False, dtype='category' )
In [31]:
c3 = pd.CategoricalIndex( # 數(shù)據(jù) ["S","M","L","XS","M","L","S","M","L","XL"], # 分類名字 categories=["XS","S","M","L","XL"], # 確定排序 ordered=True ) c3
Out[31]:
CategoricalIndex( ['S', 'M', 'L', 'XS', 'M', 'L', 'S', 'M', 'L', 'XL'], categories=['XS', 'S', 'M', 'L', 'XL'], ordered=True, # 已經(jīng)排序 dtype='category')
In [32]:
c4 = pd.CategoricalIndex( # 待排序的數(shù)據(jù) ["S","M","L","XS","M","L","S","M","L","XL"], # 指定分類順序 categories=["XS","S","M","L","XL"], # 排序 ordered=True, # 索引名字 name="category" ) c4
Out[32]:
CategoricalIndex( ['S', 'M', 'L', 'XS', 'M', 'L', 'S', 'M', 'L', 'XL'], categories=['XS', 'S', 'M', 'L', 'XL'], ordered=True, name='category', dtype='category' )
CategoricalIndex 索引對(duì)象也可以從 Categorical() 方法進(jìn)行實(shí)例化得到:
In [33]:
c5 = pd.Categorical(["a", "b", "c", "c", "b", "c", "a"]) pd.CategoricalIndex(c5)
Out[33]:
CategoricalIndex( ['a', 'b', 'c', 'c', 'b', 'c', 'a'], categories=['a', 'b', 'c'], ordered=False, # 默認(rèn)不排序 dtype='category')
In [34]:
pd.CategoricalIndex(c5, ordered=True) # 指定排序
Out[34]:
CategoricalIndex( ['a', 'b', 'c', 'c', 'b', 'c', 'a'], categories=['a', 'b', 'c'], ordered=True, # 排序 dtype='category')
pd.DatetimeIndex
以時(shí)間和日期作為索引,通過(guò)date_range函數(shù)來(lái)生成,具體語(yǔ)法為:
pd.DatetimeIndex( data=None, # 數(shù)據(jù) freq=NoDefault.no_default, # 頻率 tz=None, # 時(shí)區(qū) normalize=False, # 是否歸一化 closed=None, # 區(qū)間是否關(guān)閉 # ‘infer', bool-ndarray, ‘NaT', 默認(rèn)‘raise' ambiguous='raise', dayfirst=False, # 第一天 yearfirst=False, # 第一年 dtype=None, # 數(shù)據(jù)類型 copy=False, # 副本 name=None # 名字 )
以時(shí)間和日期作為索引,通過(guò)date_range函數(shù)來(lái)生成,具體例子為:
In [35]:
# 默認(rèn)天為頻率 pd.date_range("2022-01-01",periods=6)
Out[35]:
DatetimeIndex( ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06'], dtype='datetime64[ns]', freq='D' # 頻率 )
In [36]:
# 日期作為索引,D代表天 d1 = pd.date_range( "2022-01-01", periods=6, freq="D") d1
Out[36]:
DatetimeIndex( ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06'], dtype='datetime64[ns]', freq='D')
In [37]:
# H代表小時(shí) pd.date_range("2022-01-01",periods=6, freq="H")
Out[37]:
DatetimeIndex( ['2022-01-01 00:00:00', '2022-01-01 01:00:00', '2022-01-01 02:00:00', '2022-01-01 03:00:00', '2022-01-01 04:00:00', '2022-01-01 05:00:00'], dtype='datetime64[ns]', freq='H')
In [38]:
# M代表月 pd.date_range("2022-01-01",periods=6, freq="3M")
Out[38]:
DatetimeIndex( ['2022-01-31', '2022-04-30', '2022-07-31','2022-10-31', '2023-01-31', '2023-04-30'], dtype='datetime64[ns]', freq='3M')
In [39]:
# Q代表季度 pd.date_range("2022-01-01",periods=6, freq="Q")
顯示的結(jié)果中以一個(gè)季度-3個(gè)月為頻率:
Out[39]:
DatetimeIndex( ['2022-03-31', '2022-06-30', '2022-09-30','2022-12-31', '2023-03-31', '2023-06-30'], dtype='datetime64[ns]', freq='Q-DEC')
In [40]:
# 指定時(shí)區(qū)tz pd.date_range("2022-01-01",periods=6, tz="Asia/Calcutta")
Out[40]:
DatetimeIndex( ['2022-01-01 00:00:00+05:30', '2022-01-02 00:00:00+05:30', '2022-01-03 00:00:00+05:30', '2022-01-04 00:00:00+05:30', '2022-01-05 00:00:00+05:30', '2022-01-06 00:00:00+05:30'], dtype='datetime64[ns, Asia/Calcutta]', freq='D')
pd.PeriodIndex
pd.PeriodIndex是一個(gè)專門針對(duì)周期性數(shù)據(jù)的索引,方便針對(duì)具有一定周期的數(shù)據(jù)進(jìn)行處理,具體用法如下:
pd.PeriodIndex( data=None, # 數(shù)據(jù) ordinal=None, # 序數(shù) freq=None, # 頻率 dtype=None, # 數(shù)據(jù)類型 copy=False, # 副本 name=None, # 名字 **fields )
生成pd.PeriodIndex對(duì)象的方式1:指定開始時(shí)間、周期頻率
In [41]:
pd.period_range('2022-01-01 09:00', periods=5, freq='H')
Out[41]:
PeriodIndex( ['2022-01-01 09:00', '2022-01-01 10:00', '2022-01-01 11:00','2022-01-01 12:00', '2022-01-01 13:00'], dtype='period[H]', freq='H')
In [42]:
pd.period_range('2022-01-01 09:00', periods=6, freq='2D')
Out[42]:
PeriodIndex( ['2022-01-01', '2022-01-03', '2022-01-05', '2022-01-07', '2022-01-09', '2022-01-11'], dtype='period[2D]', freq='2D')
In [43]:
pd.period_range('2022-01', periods=5, freq='M')
Out[43]:
PeriodIndex( ['2022-01', '2022-02', '2022-03', '2022-04', '2022-05'], dtype='period[M]', freq='M')
In [44]:
p1 = pd.DataFrame( {"name":["xiaoming","xiaohong","Peter","Mike","Jimmy"]}, # 指定索引 index=pd.period_range('2022-01-01 09:00', periods=5, freq='3H') ) p1
生成pd.PeriodIndex對(duì)象的方式2:直接使用pd.PeriodIndex
方法
In [45]:
pd.PeriodIndex( ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04'], freq = '2H')
Out[45]:
PeriodIndex( ['2022-01-01 00:00', '2022-01-02 00:00', '2022-01-03 00:00','2022-01-04 00:00'], dtype='period[2H]', freq='2H')
In [46]:
pd.PeriodIndex( ['2022-01', '2022-02', '2022-03', '2022-04'], freq = 'M')
Out[46]:
PeriodIndex( ['2022-01', '2022-02', '2022-03', '2022-04'], dtype='period[M]', freq='M')
In [47]:
pd.PeriodIndex(['2022-01', '2022-07'], freq = 'Q')
Out[47]:
PeriodIndex( ['2022Q1', '2022Q3'], dtype='period[Q-DEC]', freq='Q-DEC')
生成pd.PeriodIndex對(duì)象的方式3:利用date_range函數(shù)先生成DatetimeIndex對(duì)象
In [48]:
data = pd.date_range("2022-01-01",periods=6) data
Out[48]:
DatetimeIndex( ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06'], dtype='datetime64[ns]', freq='D')
In [49]:
pd.PeriodIndex(data=data)
Out[49]:
PeriodIndex( ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06'], dtype='period[D]', freq='D')
In [50]:
p2 = pd.DataFrame(np.random.randn(400, 1), columns=['number'], # 指定索引 index=pd.period_range('2021-01-01 8:00', periods=400, freq='D')) p2
pd.TimedeltaIndex
pd.TimedeltaIndex( data=None, # 數(shù)據(jù) unit=None, # 最小單元 freq=NoDefault.no_default, # 頻率 closed=None, # 指定關(guān)閉的位置 dtype=dtype('<m8[ns]'), # 數(shù)據(jù)類型 copy=False, # 副本 name=None # 名字 )
創(chuàng)建方式1:指定數(shù)據(jù)和最小單元
In [51]:
pd.TimedeltaIndex([12, 24, 36, 48], unit='s')
Out[51]:
TimedeltaIndex( ['0 days 00:00:12', '0 days 00:00:24', '0 days 00:00:36','0 days 00:00:48'], dtype='timedelta64[ns]', freq=None)
In [52]:
pd.TimedeltaIndex([1, 2, 3, 4], unit='h') # 按小時(shí)
Out[52]:
TimedeltaIndex( ['0 days 01:00:00', '0 days 02:00:00', '0 days 03:00:00','0 days 04:00:00'], dtype='timedelta64[ns]', freq=None)
In [53]:
pd.TimedeltaIndex([12, 24, 36, 48], unit='h')
Out[53]:
TimedeltaIndex( ['0 days 12:00:00', '1 days 00:00:00', '1 days 12:00:00','2 days 00:00:00'], dtype='timedelta64[ns]', # 數(shù)據(jù)類型 freq=None)
In [54]:
pd.TimedeltaIndex([12, 24, 36, 48], unit='D')
Out[54]:
TimedeltaIndex( ['12 days', '24 days', '36 days', '48 days'], dtype='timedelta64[ns]', freq=None)
創(chuàng)建方式2:通過(guò)timedelta_range函數(shù)來(lái)間接生成
In [55]:
data1 = pd.timedelta_range(start='1 day', periods=4) data1
Out[55]:
TimedeltaIndex(['1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq='D')
In [56]:
pt1 = pd.TimedeltaIndex(data1) pt1
Out[56]:
TimedeltaIndex( ['1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq='D')
In [57]:
data2 = pd.timedelta_range(start='1 day', end='3 days', freq='6H') data2
Out[57]:
TimedeltaIndex( ['1 days 00:00:00', '1 days 06:00:00', '1 days 12:00:00', '1 days 18:00:00', '2 days 00:00:00', '2 days 06:00:00', '2 days 12:00:00', '2 days 18:00:00', '3 days 00:00:00'], dtype='timedelta64[ns]', freq='6H')
In [58]:
pt2 = pd.TimedeltaIndex(data2) pt2
Out[58]:
到此這篇關(guān)于一文弄懂10大Pandas的索引的文章就介紹到這了,更多相關(guān)Pandas 索引內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
教你用Python腳本快速為iOS10生成圖標(biāo)和截屏
這篇文章主要介紹了教你用Python快速為iOS10生成圖標(biāo)和截屏的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09python深度學(xué)習(xí)tensorflow卷積層示例教程
這篇文章主要為大家介紹了python深度學(xué)習(xí)tensorflow卷積層示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Python基于scipy實(shí)現(xiàn)信號(hào)濾波功能
本文將以實(shí)戰(zhàn)的形式基于scipy模塊使用Python實(shí)現(xiàn)簡(jiǎn)單濾波處理。這篇文章主要介紹了Python基于scipy實(shí)現(xiàn)信號(hào)濾波功能,需要的朋友可以參考下2019-05-05使用python編寫簡(jiǎn)單的小程序編譯成exe跑在win10上
這篇文章主要介紹了使用python編寫簡(jiǎn)單的小程序編譯成exe跑在win10上的相關(guān)資料,需要的朋友可以參考下2018-01-01python語(yǔ)言線程標(biāo)準(zhǔn)庫(kù)threading.local解讀總結(jié)
在本篇文章里我們給各位整理了一篇關(guān)于python threading.local源碼解讀的相關(guān)文章知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。2019-11-11matplotlib 曲線圖 和 折線圖 plt.plot()實(shí)例
這篇文章主要介紹了matplotlib 曲線圖 和 折線圖 plt.plot()實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04mac下pycharm設(shè)置python版本的圖文教程
今天小編就為大家分享一篇mac下pycharm設(shè)置python版本的圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06對(duì)Tensorflow中的矩陣運(yùn)算函數(shù)詳解
今天小編就為大家分享一篇對(duì)Tensorflow中的矩陣運(yùn)算函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07