pandas如何操作Excel座咆?這一篇足以帶你玩轉(zhuǎn)

Python 操作Excel操作總結(jié),包括Series和Data Frame的互轉(zhuǎn)苇经、使用pandas讀取Excel表格锨推、python讀取多個數(shù)據(jù)表铅歼、python合并多個工作表以及寫入Excel文件

pandas是一款基于NumPy的數(shù)據(jù)分析工具公壤。它提供了大量的能使我們快捷處理數(shù)據(jù)的方法。

image.png

常用數(shù)據(jù)類型

  • Series:一維數(shù)組椎椰,與NumPy中的一維數(shù)組相似厦幅,和Python自身的list也相似。區(qū)別自于Series中的數(shù)據(jù)只能是一種數(shù)據(jù)慨飘,而list中的數(shù)據(jù)可以不一樣
  • Time-Series:以時間為索引的Series
  • DataFrame:二維的表格型數(shù)據(jù)結(jié)構(gòu)确憨。經(jīng)常用于處理Excel表格數(shù)據(jù)等,這也是我們本節(jié)課會重點(diǎn)講的內(nèi)容
  • Panel:三維數(shù)組(0.25版本后瓤的,統(tǒng)一使用xarray休弃,不再支持Panel)

Series和Data Frame的互轉(zhuǎn)

  • 利用to_frame()實(shí)現(xiàn)Series轉(zhuǎn)DataFrame
  • 利用squeeze()實(shí)現(xiàn)單列數(shù)據(jù)DataFrame轉(zhuǎn)Series
import pandas as pd
s = pd.Series(["北山啦","關(guān)注","點(diǎn)贊"])
s
0    北山啦
1     關(guān)注
2     點(diǎn)贊
dtype: object
s = s.to_frame(name="列名")
s
image.png
s.squeeze()
0    北山啦
1     關(guān)注
2     點(diǎn)贊
Name: 列名, dtype: object

使用pandas讀取Excel表格

在pandas中,讀取Excel非常簡單圈膏,它只有一個方法:readExcel()玫芦,但是的參數(shù)非常多

主要常用的參數(shù),我們先對其進(jìn)行了解:

  • io:一般指定excel文件路徑就可以了本辐。也可以是其他Excel讀取對象如ExcelFile桥帆、xlrd.Book等
  • sheet_name:用于指定工作表(sheet)名稱∩髦澹可以是數(shù)字(工作表從0開始的索引)
  • header:指定作為列名的行老虫,默認(rèn)為0,即第一行為列名茫多。如果數(shù)據(jù)不含列名祈匙,則設(shè)為None
  • names:指定新的列名列表。列表中元素個數(shù)和列數(shù)必須一致
  • index_col:指定列為索引列天揖,默認(rèn)None指的是索引為0的第一列為索引列
  • usecols:要解析數(shù)據(jù)的列夺欲,可以是int或者str的列表,也可以是以逗號分隔的字符串(pandas 0.24新增功能)今膊,例如:”A:F”些阅,表示從A列到F列,”A,C,F”表示A斑唬、C市埋、F三列,還可以寫成”A,C,F,K:Q”
  • dtype:各列的數(shù)據(jù)類型恕刘,例如:{‘a(chǎn)’: np.float64, ‘b’: np.int32}
  • converters:用于轉(zhuǎn)換各列數(shù)據(jù)的函數(shù)的字典數(shù)據(jù)缤谎,例如:{‘a(chǎn)’: func_1, ‘b’: func_2}
import pandas as pd
sheet = pd.read_excel(io="測試數(shù)據(jù).xlsx")
sheet.head()
image.png

我們先來看一下取回的數(shù)據(jù)的數(shù)據(jù)類型是什么。

print(type(sheet))
<class 'pandas.core.frame.DataFrame'>

可以看到褐着,它就是我們前面提到的DataFrame數(shù)據(jù)坷澡。,直接通過它的列名稱來獲取即可含蓉,比如频敛,要獲得所有的工資信息镣陕,可以如下:

print(sheet['工資'])
0      7653
1      8799
2      9800
3     12880
4      3600
5      3800
6      8976
7     12000
8      8900
9      7688
10     6712
11     9655
12     6854
13     8122
14     6788
15     8830
Name: 工資, dtype: int64

可以看到它的所有的數(shù)據(jù)都列出來了,并且這一列數(shù)據(jù)的數(shù)據(jù)類型是int64姻政,即64位整型。
得到這一列數(shù)據(jù)后岂嗓,我們可以對它進(jìn)行處理汁展。

for i in sheet['工資']:
    print(i)
7653
8799
9800
12880
3600
3800
8976
12000
8900
7688
6712
9655
6854
8122
6788
8830

或者將它轉(zhuǎn)換成列表后再處理:

salaries = list(sheet['工資'])
print(salaries)
[7653, 8799, 9800, 12880, 3600, 3800, 8976, 12000, 8900, 7688, 6712, 9655, 6854, 8122, 6788, 8830]

計(jì)算大家的平均工資:

sum = 0
for i in salaries:
    sum += i

print(f"總工資:{sum}")
ave = sum / len(salaries)
print(f"平均工資:{ave}")
總工資:131057
平均工資:8191.0625

我們也可以對求和的方法,使用lambda表達(dá)式(匿名函數(shù))結(jié)合reduce()函數(shù)進(jìn)行厌殉。reduce()函數(shù)會對列表食绿、元組等可遍歷的元素依次進(jìn)行運(yùn)算:將第一個元素和第二個元素進(jìn)行運(yùn)算,并將結(jié)果和第三個元素進(jìn)行運(yùn)算公罕,直到最后一個元素器紧。

import functools
sum = functools.reduce(lambda x, y: x + y, salaries)
print(sum)
131057

我們可以使用read_excel中的usecols參數(shù),通過它指定我們需要讀取數(shù)據(jù)的列楼眷,它接收字符串或者整數(shù)列表格式的數(shù)據(jù)铲汪,列表中列出我們想要取出數(shù)據(jù)的列的名稱或者索引。

import pandas as pd
sheet = pd.read_excel(io="測試數(shù)據(jù).xlsx", usecols=[2])
sheet
image.png

或者:

import pandas as pd
sheet = pd.read_excel(io="測試數(shù)據(jù).xlsx", usecols=['工資'])
sheet
image.png

如果想在讀取數(shù)據(jù)的時候,將原來的列的名字改成其他名字,則可以使用names參數(shù)指定為其他列名:

import pandas as pd
sheet = pd.read_excel(io="測試數(shù)據(jù).xlsx", names=['name','age','salary'])
sheet
image.png

需要注意的是热康,此時班利,我們?nèi)绻獙@個DataFrame進(jìn)行操作,就需要使用新的列名了痹扇。 如果我們想在取出工資數(shù)據(jù)的時候,以“¥12,345”的格式顯示,則可以在獲取數(shù)據(jù)的時候勺择,就指定轉(zhuǎn)換函數(shù):

import pandas as pd
def formatsalary(num):
    return f"¥{format(num,',')}"

sheet = pd.read_excel(io="測試數(shù)據(jù).xlsx", usecols=['工資'],converters={'工資':formatsalary})
sheet
image.png

上面通過converters指定了“工資”列,使用formatsalary函數(shù)來處理伦忠,所以取出來的數(shù)據(jù)就已經(jīng)處理過的了省核。當(dāng)然,我們也可以取出來后在 對其進(jìn)行格式化昆码。

其他的參數(shù)芳撒,大家可以自己進(jìn)行試驗(yàn)。下面我們再來看一下未桥,假設(shè)我要取出所有大于等于8000的工資笔刹,該如何進(jìn)行處理呢?我們可以使用按照條件來獲取DataFrame的行數(shù)據(jù):

import pandas as pd
sheet = pd.read_excel(io="測試數(shù)據(jù).xlsx", usecols=['工資'])
high_salary = sheet[sheet['工資'] >= 8000]
high_salary
image.png

如果想取得工資大于等于8000小于等于10000的數(shù)據(jù):

import pandas as pd
sheet = pd.read_excel(io="測試數(shù)據(jù).xlsx")
high_salary = sheet[(sheet['工資'] >= 8000) & (sheet['工資'] <=10000)]
high_salary
image.png

如果只想顯示符合條件的姓名和工資冬耿,則可以通過列表的方式指定要顯示的列:

import pandas as pd
sheet = pd.read_excel(io="測試數(shù)據(jù).xlsx")
high_salary = sheet[(sheet['工資'] >= 8000) & (sheet['工資'] <=10000)][['姓名','工資']]
high_salary
image.png

讀取多個數(shù)據(jù)表

在上面的例子中舌菜,雖然在“測試數(shù)據(jù).xlsx”文件中包含了兩個數(shù)據(jù)表(sheet),但它只讀取了第一個數(shù)據(jù)表的內(nèi)容亦镶,如果我想把兩個數(shù)據(jù)表數(shù)據(jù)都讀取出來該怎么辦呢日月?可以指定sheet_name參數(shù)袱瓮,它接收字符串、數(shù)字爱咬、字符串或數(shù)字列表以及None尺借。如果指定為None,則返回所有數(shù)據(jù)表數(shù)據(jù)精拟。默認(rèn)為0燎斩,即返回第一個數(shù)據(jù)表數(shù)據(jù)。

import pandas as pd
sheet = pd.read_excel(io="測試數(shù)據(jù).xlsx", sheet_name=[0, 1])
sheet
{0:            姓名  年齡     工資
 0     OLIVER.  23   7653
 1      HARRY.  45   8799
 2     GEORGE.  34   9800
 3       NOAH.  54  12880
 4       JACK.  34   3600
 5      JACOB.  32   3800
 6   MUHAMMAD.  51   8976
 7        LEO.  46  12000
 8     Harper.  42   8900
 9     Evelyn.  38   7688
 10      Ella.  33   6712
 11     Avery.  26   9655
 12  Scarlett.  37   6854
 13   Madison.  41   8122
 14      Lily.  54   6788
 15   Eleanor.  28   8830,
 1:     姓名  年齡     工資
 0   張三  39  15000
 1   李四  43  16000
 2   李雷  25   6800
 3  韓梅梅  28  23000}

可以看到蜂绎,得到了兩個數(shù)據(jù)表的數(shù)據(jù)栅表。此時要得到數(shù)據(jù)表中的數(shù)據(jù),就需要先通過sheet[0]师枣、sheet[1]得到第一個數(shù)據(jù)表的所有數(shù)據(jù)怪瓶,再在這個數(shù)據(jù)表數(shù)據(jù)中對數(shù)據(jù)進(jìn)行處理了,例如:

sheet[1]
image.png

如果用的是數(shù)據(jù)表的名字践美,則應(yīng)該寫成sheet[‘甲公司’]洗贰。
如果我們想把這兩個數(shù)據(jù)表的數(shù)據(jù)合并到一起,可以使用pandas中的concat()函數(shù):

import pandas as pd
sheet = pd.read_excel(io="測試數(shù)據(jù).xlsx", sheet_name=[1, 0])
st = pd.concat(sheet,ignore_index = True)
st
image.png

這里ignore_index的意思是忽略各自的索引陨倡,統(tǒng)一使用新的索引哆姻。

合并多個工作表

多個EXCECL合并到一個工作表中,Python來幫你實(shí)現(xiàn)

# -*- coding:utf-8 -*-
# @Address:https://beishan.blog.csdn.net/
# @Author:北山啦
import pandas as pd
import os
path = r"E:\Python\00數(shù)據(jù)分析\RichardFu123\五省PM2.5\archive"
dfs,index = [],0
for i in os.listdir(path):
    dfs.append(pd.read_csv(os.path.join(path,i)))
    print(f"正在合并{index+1}工作表")
    index += 1
df = pd.concat(dfs)
df.to_csv("數(shù)據(jù)匯總.csv",index=False)
正在合并1工作表
正在合并2工作表
正在合并3工作表
正在合并4工作表
正在合并5工作表
正在合并6工作表
正在合并7工作表

寫入Excel文件

可以將DataFrame數(shù)據(jù)寫入到一個新的Excel文件中玫膀,例如矛缨,我們可以將上面合并的兩個Excel數(shù)據(jù)表數(shù)據(jù),寫入到新的Excel文件中:

df = pd.DataFrame(st)
df.to_excel("合并工資報(bào)表.xlsx")

這里我們使用DataFrame上的to_excel()方法將數(shù)據(jù)寫入到Excel文件中帖旨。它的原型是:to_excel(self, excel_writer, sheet_name=‘Sheet1’, na_rep=’’, float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep=‘inf’, verbose=True, freeze_panes=None)箕昭,常用的參數(shù)說明:

  • excel_writer:需要指定一個寫入的文件,可以是字符串或者ExcelWriter對象
  • sheet_name:寫入的工作表名稱解阅,是一個字符串落竹,默認(rèn)為’Sheet1’
  • na_rep:當(dāng)沒有數(shù)據(jù)的時候,應(yīng)該填入的默認(rèn)值货抄,默認(rèn)為空字符串
  • float_format:浮點(diǎn)數(shù)格式述召,默認(rèn)為None⌒返兀可以按照float_format="%.2f"這樣的方式指定
  • columns:指定寫入的列名順序积暖,是一個列表。
  • header:是否有表頭怪与,默認(rèn)為True夺刑,可以是布爾類型或者字符串列表。
  • index:是否加上行索引,默認(rèn)為True遍愿。
  • index_label:索引標(biāo)簽存淫,可以是字符串或者列表,默認(rèn)為None沼填。
  • startrow:插入數(shù)據(jù)的起始行桅咆,默認(rèn)為0。
  • startcol:插入數(shù)據(jù)的其實(shí)列坞笙,默認(rèn)0
  • engine:使用的寫文件引擎岩饼,例如:‘openpyxl’ 、 ‘xlsxwriter’
  • 當(dāng)然羞海,我們也可以不限于將一個Excel表中的數(shù)據(jù)寫入到另一個Excel文件,我們自己在程序中運(yùn)行得到的數(shù)據(jù)曲管,也可以將其組織成DataFrame后却邓,寫入到Excel文件中。
import pandas as pd
df = pd.DataFrame({'姓名':['李雷', '韓梅梅', '小明',
                           '張三', '李四', '王五'],
                  '年齡':[31, 22, 30, 49, 38, 33]})
df.to_excel("員工表.xlsx", sheet_name="202002入職")

看看是不是寫入到文件了:

f = pd.read_excel("員工表.xlsx")
f
image.png

可以看到院水,確實(shí)已經(jīng)寫入進(jìn)去了腊徙。
那如果要寫多個數(shù)據(jù)到一個Excel文件的多個數(shù)據(jù)表(sheet)中,該怎么處理呢檬某?此時可以使用下面的方法撬腾。

df1 = pd.DataFrame({'姓名':['李雷', '韓梅梅', '小明',
                           '張三', '李四', '王五'],
                  '年齡':[31, 22, 30, 49, 38, 33]})

df2 = pd.DataFrame({'Names': ['Andrew', 'Tomas', 'Larry',
                           'Sophie', 'Sally', 'Simone'],
                   'Age':[42, 37, 39, 35, 29, 27]})

dfs = {'國內(nèi)員工':df1, '外籍員工':df2}
writer = pd.ExcelWriter('Employees.xlsx', engine='xlsxwriter')

for sheet_name in dfs.keys():
    dfs[sheet_name].to_excel(writer, sheet_name=sheet_name, index=False)

writer.save()

看看是不是已經(jīng)寫入到文件了:

sheet = pd.read_excel(io="Employees.xlsx", sheet_name=None)
sheet
{'國內(nèi)員工':     姓名  年齡
 0   李雷  31
 1  韓梅梅  22
 2   小明  30
 3   張三  49
 4   李四  38
 5   王五  33,
 '外籍員工':     Names  Age
 0  Andrew   42
 1   Tomas   37
 2   Larry   39
 3  Sophie   35
 4   Sally   29
 5  Simone   27}

但是仔細(xì)看的話,會發(fā)現(xiàn)上面的外籍員工這個數(shù)據(jù)表恢恼,字段Names和Age反了民傻,這是因?yàn)镈ataFrame自動按照字母順序給我們排序了。要避免這種情況场斑,需要在to_excel()中加上columns來指定表頭字段順序:

df1 = pd.DataFrame({'姓名':['李雷', '韓梅梅', '小明',
                           '張三', '李四', '王五'],
                  '年齡':[31, 22, 30, 49, 38, 33]})

df2 = pd.DataFrame({'Names': ['Andrew', 'Tomas', 'Larry',
                           'Sophie', 'Sally', 'Simone'],
                   'Age':[42, 37, 39, 35, 29, 27]})

dfs = {'國內(nèi)員工':df1, '外籍員工':df2}
cols = {"國內(nèi)員工":['姓名', '年齡'],"外籍員工":['Names','Age']}  # 指定列名順序
writer = pd.ExcelWriter('Employees.xlsx', engine='xlsxwriter')

for sheet_name in dfs.keys():
    dfs[sheet_name].to_excel(writer, sheet_name=sheet_name, index=False, columns = cols[sheet_name])

writer.save()

再來看看現(xiàn)在是否正確:

sheet = pd.read_excel(io="Employees.xlsx", sheet_name=None)
sheet
{'國內(nèi)員工':     姓名  年齡
 0   李雷  31
 1  韓梅梅  22
 2   小明  30
 3   張三  49
 4   李四  38
 5   王五  33,
 '外籍員工':     Names  Age
 0  Andrew   42
 1   Tomas   37
 2   Larry   39
 3  Sophie   35
 4   Sally   29
 5  Simone   27}

現(xiàn)在沒問題了漓踢。
還可以使用前面讀寫文件的時候的with … 這種方式。
上面的方式漏隐,會覆蓋原來的文件內(nèi)容喧半。如果要在原有的Excel表中加上一個新的數(shù)據(jù)表(sheet),可以通過下面的方式:

from openpyxl import load_workbook
book = load_workbook("Employees.xlsx")  # 加載原有的數(shù)據(jù)到Workbook

df3 = pd.DataFrame({'Names': ['Judy'],
                   'Age':[27]})

with pd.ExcelWriter('Employees.xlsx',
                    engine='openpyxl') as writer:  
    writer.book = book  # 讓writer加入原來的兩個workbook
    df3.to_excel(writer, sheet_name='候補(bǔ)員工', index=False, columns=['Names', 'Age'])
    writer.save()
import pandas as pd
sheet = pd.read_excel(io="Employees.xlsx", sheet_name=None)
sheet
{'國內(nèi)員工':     姓名  年齡
 0   李雷  31
 1  韓梅梅  22
 2   小明  30
 3   張三  49
 4   李四  38
 5   王五  33,
 '外籍員工':     Names  Age
 0  Andrew   42
 1   Tomas   37
 2   Larry   39
 3  Sophie   35
 4   Sally   29
 5  Simone   27,
 '候補(bǔ)員工':   Names  Age
 0  Judy   27}

可以看到青责,在原來的Excel文件中挺据,已經(jīng)加入了“候補(bǔ)員工”這個數(shù)據(jù)表。加入需要在某個數(shù)據(jù)表中加入數(shù)據(jù)(append)脖隶,可以使用下面方式:

from openpyxl import load_workbook
book = load_workbook("Employees.xlsx")  # 加載原有的數(shù)據(jù)到Workbook

df4 = pd.DataFrame({'Names': ['Moore'],
                   'Age':[38]})

with pd.ExcelWriter('Employees.xlsx',
                    engine='openpyxl') as writer:  
    writer.book = book  # 讓writer加入原來的3個workbook
    writer.sheets = {ws.title: ws for ws in book.worksheets}
    start_row = writer.sheets['候補(bǔ)員工'].max_row
    df4.to_excel(writer, sheet_name='候補(bǔ)員工', index=False, columns=['Names', 'Age'], startrow=start_row,header=False)
    writer.save()

這里的要點(diǎn)是:使用startrow指定要插入數(shù)據(jù)的文字扁耐,這里還要注意我們是往某個已經(jīng)存在的數(shù)據(jù)表插入數(shù)據(jù),所以要指定正確的sheet_name产阱,還有就是為了避免重復(fù)的表頭做葵,將header設(shè)置成False。

import pandas as pd
sheet = pd.read_excel(io="Employees.xlsx", sheet_name=None)
sheet
{'國內(nèi)員工':     姓名  年齡
 0   李雷  31
 1  韓梅梅  22
 2   小明  30
 3   張三  49
 4   李四  38
 5   王五  33,
 '外籍員工':     Names  Age
 0  Andrew   42
 1   Tomas   37
 2   Larry   39
 3  Sophie   35
 4   Sally   29
 5  Simone   27,
 '候補(bǔ)員工':    Names  Age
 0   Judy   27
 1  Moore   38}
image.png

作者:北山啦
原文鏈接:https://beishan.blog.csdn.net/article/details/115290941

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末心墅,一起剝皮案震驚了整個濱河市酿矢,隨后出現(xiàn)的幾起案子榨乎,更是在濱河造成了極大的恐慌,老刑警劉巖瘫筐,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜜暑,死亡現(xiàn)場離奇詭異,居然都是意外死亡策肝,警方通過查閱死者的電腦和手機(jī)肛捍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來之众,“玉大人拙毫,你說我怎么就攤上這事」缀蹋” “怎么了缀蹄?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長膘婶。 經(jīng)常有香客問我缺前,道長,這世上最難降的妖魔是什么悬襟? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任衅码,我火速辦了婚禮,結(jié)果婚禮上脊岳,老公的妹妹穿的比我還像新娘逝段。我一直安慰自己,他們只是感情好割捅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布惹恃。 她就那樣靜靜地躺著,像睡著了一般棺牧。 火紅的嫁衣襯著肌膚如雪巫糙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天颊乘,我揣著相機(jī)與錄音参淹,去河邊找鬼。 笑死乏悄,一個胖子當(dāng)著我的面吹牛浙值,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播檩小,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼开呐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起筐付,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤卵惦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瓦戚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沮尿,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年较解,在試婚紗的時候發(fā)現(xiàn)自己被綠了畜疾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡印衔,死狀恐怖啡捶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奸焙,我是刑警寧澤瞎暑,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站忿偷,受9級特大地震影響金顿,放射性物質(zhì)發(fā)生泄漏臊泌。R本人自食惡果不足惜鲤桥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望渠概。 院中可真熱鬧茶凳,春花似錦、人聲如沸播揪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猪狈。三九已至箱沦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雇庙,已是汗流浹背谓形。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疆前,地道東北人寒跳。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像竹椒,于是被迫代替她去往敵國和親童太。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容