扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
abs() divmod() input() open() staticmethod()
公司主营业务:网站设计制作、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出庐阳免费做网站回馈大家。
all() enumerate() int() ord() str()
any() eval() isinstance() pow() sum()
basestring() execfile() issubclass() print() super()
bin() file() iter() property() tuple()
bool() filter() len() range() type()
bytearray() float() list() raw_input() unichr()
callable() format() locals() reduce() unicode()
chr() frozenset() long() reload() vars()
classmethod() getattr() map() repr() xrange()
cmp() globals() max() reverse() zip()
compile() hasattr() memoryview() round() __import__()
complex() hash() min() set()
delattr() help() next() setattr()
dict() hex() object() slice()
dir() id() oct() sorted()
L形切入; 直角切入。所谓L Cut。并不代表视频先入。而是声音还没有结束的时候,视频切到了别的地方去。于是声音上面的第一个视频片段和声音形成一个L的形状。这个在剪辑纪录片或者电影预告片的时候特别有用。我们常常让说话的人说到一半的时候,把画面剪接到与之对话相关的画面上去。让观众更好的理解说话的内容,也让视频看起来更加有趣。
JCut和LCut不是一定要严格遵照这样的格式的,大家可以自己变通。Lz的理解是,当你用这种声画不同步的方法进行转场,最重要的是,在声音持续的过程中,画面要带到发声的东西,让观众理解这是什么在发声,为什么在发声,谁在说话。因为思维的连贯性,整个剪辑出来的片段就看起来更加连贯。
将Excel中的的数据读入数据框架DataFrame后,可以非常方便的进行各种数据处理。
21.1 列间求和
求总分(总分=语文+数学+英语)
对于上一章所提到的学生成绩表,仅用一个语句即可完成总分计算,并填充。
df['总分']=df['语文']+df['数学']+df['英语']
完整代码如下:
from pandas import read_excel
file='d:/student.xlsx' #见第18章表18-1
df=read_excel(file,sheet_name=0,converters={'学号':str})
df['总分']=df['语文']+df['数学']+df['英语']
print(df.head()) #df.head()的作用是仅显示5行记录。
运行结果如下:
序号 学号 姓名 年级 班级 语文 数学 英语 总分 名次
0 1 070101 王博宇 NaN NaN 84 71 93 248 NaN
1 2 070102 陈冠涛 NaN NaN 89 89 89 267 NaN
2 3 070103 李文博 NaN NaN 89 72 76 237 NaN
3 4 070204 姜海燕 NaN NaN 89 89 89 267 NaN
4 5 070205 林若溪 NaN NaN 91 95 83 269 NaN
21.2替换
既可以将对满足条件的行和列的数据替换,也可以对整个集合的数据按照条件进行替换。
df['总分'].replace(310,'x',inplace=True)
将总分列的数值“310”替换为“x”。inplace=True表示改变原数据。
df.replace(76,0,inplace=True)
将整个DataFrame中的数值“76”替换为“0”。
df.replace([98,76,99],0,inplace=True)
将整个DataFrame中的数值“98,76,99”一次替换为“0”。
21.2排序
既可以将某一列作为关键字段排序,也可以将几个列分别作为主、次关键字段进行排序。排序既可以按升序排序,也可以按降序排序。
函数sort_values()的语法格式如下:
df.sort_values(by=[“col1”,”col2”,......,”coln”],ascending=False)
其中,coln表示列名,也可以是列名的列表;ascending表示排序方式,值为True表示升序,可以省缺,值为False表示降序。
如:
df=df.sort_values(by=['总分'],ascending=False)
表示按照“总分”从高到低排序。
df=df.sort_values(by=['总分','语文'],ascending=False)
表示按照“总分”从高到低排序,若“总分”相同,再按照“语文”成绩从高到低排序。
21.3 字段截取
函数slice()可以从某列中截取字符串。格式如下:
slice(start,stop)
其中,start表示开始位置;stop表示结束位置
例:
df['年级']=df['学号'].str.slice(0,2)
通过此语句可以截取学号字段的第1、2个字符,并赋值给年级字段。
21.4 记录抽取
可以抽取满足条件的记录。
例:抽取总分300的记录。
df[df.总分300]
抽取总分在300到310之间(包括300和310)的记录。
df[df.总分.between(306,310)]
抽取学号中包含“0803”的记录。这样可以非常方便的抽取某个班的信息。
df[df.学号.str.contains('0803',na=False)]
此处的na=False,含义是如遇到NaN这样的数据,直接做不匹配处理。
21.5修改记录
1、整列替换
我们在前面已经给整列填充过数据,填充时原来的数据就被覆盖了。
即如下语句:
df['总分']=df['语文']+df['数学']+df['英语']
2、个别修改
如将值‘99’替换为值‘100’,可用如下语句:
df.replace('99','100')
将指定列的值替,如将语文列和英语列的值‘99’替换为值‘100’,可用如下语句:
df.replace({'语文':99,'英语':99},100)
可用如下程序去验证:
from pandas import read_excel
file='d:/student.xlsx'
df=read_excel(file,sheet_name=0,converters={'学号':str})
print(df[(df.语文==99) |(df.英语==99)])
df=df.replace({'语文':99,'英语':99},100)
print(df[(df.语文==99) |(df.英语==99)])
运行结果为:
序号 学号 姓名 年级 班级 语文 数学 英语 总分 名次
28 29 090802 丁能通 09 NaN 119 120 99 338 NaN
29 30 090203 沈丹妮 09 NaN 109 108 99 316 NaN
Empty DataFrame
Columns: [序号, 学号, 姓名, 年级, 班级, 语文, 数学, 英语, 总分, 名次]
Index: []
可以看出,第一个print()语句输出的结果中满足条件“语文或英语为99分”的有两条记录,替换语句执行以后,df中再没有满足条件“语文或英语为99分”的记录了。
21.6记录合并
函数concat()的格式如下:
concat([dataFrame1,dataFrame2,......],ignore_index=True)
其中,dataFrame1等表示要合并的DataFrame数据集合;ignore_index=True表示合并之后的重新建立索引。其返回值也是DataFrame类型。
concat()函数和append()函数的功能非常相似。
例:
import pandas #导入pandas模块
from pandas import read_excel #导入read_execel
file='d:/student.xlsx' #变量file表示文件路径,注意'/'的用法 数据见第18章表18-1
df=read_excel(file,sheet_name=0,converters={'学号':str})
# 将Excel文件导入到DataFrame变量中
df=df[:5] #截取df的前5个记录
print(df) #输出df
df1=df[:3] #截取df的前3个记录存入df1中
df2=df[3:5] #截取df的最后2个记录存入df2中
df3=pandas.concat([df2,df1]) #将df2与df1合并存入df3中
print(df3) #输出df3
运行结果如下:
序号 学号 姓名 年级 班级 语文 数学 英语 总分 名次
0 1 070101 王博宇 NaN NaN 84 71 93 NaN NaN
1 2 070102 陈冠涛 NaN NaN 89 89 89 NaN NaN
2 3 070103 李文博 NaN NaN 89 72 76 NaN NaN
3 4 070204 姜海燕 NaN NaN 89 89 89 NaN NaN
4 5 070205 林若溪 NaN NaN 91 95 83 NaN NaN
序号 学号 姓名 年级 班级 语文 数学 英语 总分 名次
3 4 070204 姜海燕 NaN NaN 89 89 89 NaN NaN
4 5 070205 林若溪 NaN NaN 91 95 83 NaN NaN
0 1 070101 王博宇 NaN NaN 84 71 93 NaN NaN
1 2 070102 陈冠涛 NaN NaN 89 89 89 NaN NaN
2 3 070103 李文博 NaN NaN 89 72 76 NaN NaN
由于合并时是将df1合并到df2中,可以看出,索引仍然保持原来的状态。
21.7统计次数
可以用如下方法统计出某个值在某行或者某个范围出现的次数。
from pandas import read_excel
file='d:/student.xlsx'
df=read_excel(file,sheet_name=0,converters={'学号':str})
df=df[:5]
print(df)
print(df['语文'].value_counts())
输出结果如下:
序号 学号 姓名 年级 班级 语文 数学 英语 总分 名次
0 1 070101 王博宇 NaN NaN 84 71 93 NaN NaN
1 2 070102 陈冠涛 NaN NaN 89 89 89 NaN NaN
2 3 070103 李文博 NaN NaN 89 72 76 NaN NaN
3 4 070204 姜海燕 NaN NaN 89 89 89 NaN NaN
4 5 070205 林若溪 NaN NaN 91 95 83 NaN NaN
89 3
84 1
91 1
Name: 语文, dtype: int64
可以看出,通过value_counts()函数可以统计出列中各值出现的次数。
value_counts()函数的参数还有 :
ascending,当ascending=True时升序排列,当ascending=False时升序排列(此时该参数可省缺);
normalize,当normalize=True时,显示的不再是各值出现的次数,而是占比。
将上例中的语句print(df['语文'].value_counts())改为:
print(df['语文'].value_counts(ascending=True,normalize=True))
则输出结果变成了:
91 0.2
84 0.2
89 0.6
Name: 语文, dtype: float64
21.8按值查找
print(df['语文'].isin([84,91]))
它的作用是查找‘语文’列中值和isin所指的列表中元素一致的记录,如果找到结果为True,否则为False。
输出结果:
0 True
1 False
2 False
3 False
4 True
Name: 语文, dtype: bool
21.9数据分区
根据某个分区标准,将数据按照所属区域进行划分,并用相应的标签表示,可以用cut()方法来实现。
语法格式如下:
cut(series, bins, right=True, labels=NULL)
其中:
series表示需要分组的数据;
bins表示分组的依据,是一个列表,其元素为划分分区的边界值,如[0,72,96,120],就是划分3个分区,即0~72、72~96、96~120,默认的是“左包右不包”;
right表示分组时右边是否闭合;
labels表示分组的自定义标签,也可以不重新定义。
下面对上述学生成绩表中的语文成绩进行分组,并增加一个新的列“语文等级”。
import pandas as pd
from pandas import read_excel #导入read_execel
file='d:/student.xlsx'
df=read_excel(file,sheet_name=0,converters={'学号':str})
df['年级']=df['学号'].str.slice(0,2)
df['班级']=df['学号'].str.slice(0,4)
df.总分=df.语文+df.数学+df.英语
bins=[0,72,96,max(df.语文)+1] #
lab=['不及格','及格','优秀']
grade=pd.cut(df.语文,bins,right=False,labels=lab)
df['语文等级']=grade
print(df.head())
print("语文成绩分等级统计结果:")
print(df['语文等级'].value_counts())
运行结果如下:
序号 学号 姓名 年级 班级 语文 数学 英语 总分 语文等级
0 1 070101 王博宇 07 0701 84 71 93 248 及格
1 2 070102 陈冠涛 07 0701 89 89 89 267 及格
2 3 070103 李文博 07 0701 89 72 76 237 及格
3 4 070204 姜海燕 07 0702 89 89 89 267 及格
4 5 070205 林若溪 07 0702 91 95 83 269 及格
语文成绩分等级统计结果:
及格 17
优秀 10
不及格 4
Name: 语文等级, dtype: int64
代码
我们在Jupyter Notebook中新建一个Python 2笔记本,起名为topic-model。
为了处理表格数据,我们依然使用数据框工具Pandas。先调用它。
import pandas as pd
然后读入我们的数据文件datascience.csv,注意它的编码是中文GB18030,不是Pandas默认设置的编码,所以此处需要显式指定编码类型,以免出现乱码错误。
df = pd.read_csv("datascience.csv", encoding='gb18030')
我们来看看数据框的头几行,以确认读取是否正确。
df.head()
显示结果如下:
没问题,头几行内容所有列都正确读入,文字显式正常。我们看看数据框的长度,以确认数据是否读取完整。
df.shape
执行的结果为:
(1024, 3)
行列数都与我们爬取到的数量一致,通过。
下面我们需要做一件重要工作——分词。这是因为我们需要提取每篇文章的关键词。而中文本身并不使用空格在单词间划分。
我们首先调用jieba分词包。
import jieba
我们此次需要处理的,不是单一文本数据,而是1000多条文本数据,因此我们需要把这项工作并行化。这就需要首先编写一个函数,处理单一文本的分词。
def chinese_word_cut(mytext):
return " ".join(jieba.cut(mytext))
有了这个函数之后,我们就可以不断调用它来批量处理数据框里面的全部文本(正文)信息了。你当然可以自己写个循环来做这项工作。
下面这一段代码执行起来,可能需要一小段时间。请耐心等候。
df["content_cutted"] = df.content.apply(chinese_word_cut)
执行过程中可能会出现如下提示。没关系,忽略就好。
Building prefix dict from the default dictionary ...
Loading model from cache /var/folders/8s/k8yr4zy52q1dh107gjx280mw0000gn/T/jieba.cache
Loading model cost 0.406 seconds.
Prefix dict has been built succesfully.
执行完毕之后,我们需要查看一下,文本是否已经被正确分词。
df.content_cutted.head()
奥巴马的竞选资金是一点点从选民那里募集来的。如获党内提名,可得政府拔款,但也没多少。美国大选不仅禁外国人捐款,而且禁止公司机构捐款,而只允许个人捐款。不仅如此,还为个人捐款限制了上限,防止富人捐过多的款而影响未来的公平执政。
不仅富人自己不能多捐,如果某个老板呼吁自己的员工给某人捐钱或投票支持他,都是犯法的。因此,想要筹到几千万竞争资金,唯一的办法是争取更多选民支持,一点点募集。所以,中国、公司、大笔捐款,这三条都是犯法的。
我记得以前已经有华人闹过这种丑闻了。美国的选举法就是要严防少数人企图用几个臭钱影响美国的政治。所以我们作为外国人就更别去自讨没趣了。
导入包
In [1]:
import numpy as npimport pandas as pdfrom pandas import Series,DataFrame
方便大家操作,将月份和参选人以及所在政党进行定义
In [2]:
months = {'JAN' : 1, 'FEB' : 2, 'MAR' : 3, 'APR' : 4, 'MAY' : 5, 'JUN' : 6, 'JUL' : 7, 'AUG' : 8, 'SEP' : 9, 'OCT': 10, 'NOV': 11, 'DEC' : 12}of_interest = ['Obama, Barack', 'Romney, Mitt', 'Santorum, Rick', 'Paul, Ron', 'Gingrich, Newt']parties = { 'Bachmann, Michelle': 'Republican', 'Romney, Mitt': 'Republican', 'Obama, Barack': 'Democrat', "Roemer, Charles E. 'Buddy' III": 'Reform', 'Pawlenty, Timothy': 'Republican', 'Johnson, Gary Earl': 'Libertarian', 'Paul, Ron': 'Republican', 'Santorum, Rick': 'Republican', 'Cain, Herman': 'Republican', 'Gingrich, Newt': 'Republican', 'McCotter, Thaddeus G': 'Republican', 'Huntsman, Jon': 'Republican', 'Perry, Rick': 'Republican' }
读取文件
In [3]:
table = pd.read_csv('data/usa_election.txt')table.head()
C:\jupyter\lib\site-packages\IPython\core\interactiveshell.py:2785: DtypeWarning: Columns (6) have mixed types. Specify dtype option on import or set low_memory=False. interactivity=interactivity, compiler=compiler, result=result)
Out[3]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num
0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 20-JUN-11 NaN NaN NaN SA17A 736166
1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 23-JUN-11 NaN NaN NaN SA17A 736166
2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 05-JUL-11 NaN NaN NaN SA17A 749073
3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 01-AUG-11 NaN NaN NaN SA17A 749073
4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 20-JUN-11 NaN NaN NaN SA17A 736166
In [8]:
#使用map函数 字典,新建一列各个候选人所在党派partytable['party'] = table['cand_nm'].map(parties)table.head()
Out[8]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party
0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 20-JUN-11 NaN NaN NaN SA17A 736166 Republican
1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 23-JUN-11 NaN NaN NaN SA17A 736166 Republican
2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 05-JUL-11 NaN NaN NaN SA17A 749073 Republican
3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 01-AUG-11 NaN NaN NaN SA17A 749073 Republican
4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 20-JUN-11 NaN NaN NaN SA17A 736166 Republican
In [10]:
#party这一列中有哪些元素table['party'].unique()
Out[10]:
array(['Republican', 'Democrat', 'Reform', 'Libertarian'], dtype=object)
In [ ]:
#使用value_counts()函数,统计party列中各个元素出现次数,value_counts()是Series中的,无参,返回一个带有每个元素出现次数的Series
In [11]:
table['party'].value_counts()
Out[11]:
Democrat 292400Republican 237575Reform 5364Libertarian 702Name: party, dtype: int64
In [12]:
#使用groupby()函数,查看各个党派收到的政治献金总数contb_receipt_amttable.groupby(by='party')['contb_receipt_amt'].sum()
Out[12]:
partyDemocrat 8.105758e 07Libertarian 4.132769e 05Reform 3.390338e 05Republican 1.192255e 08Name: contb_receipt_amt, dtype: float64
In [13]:
#查看具体每天各个党派收到的政治献金总数contb_receipt_amt 。使用groupby([多个分组参数])table.groupby(by=['party','contb_receipt_dt'])['contb_receipt_amt'].sum()
Out[13]:
party contb_receipt_dtDemocrat 01-AUG-11 175281.00 01-DEC-11 651532.82 01-JAN-12 58098.80 01-JUL-11 165961.00 01-JUN-11 145459.00 01-MAY-11 82644.00 01-NOV-11 122529.87 01-OCT-11 148977.00 01-SEP-11 403297.62 02-AUG-11 164510.11 02-DEC-11 216056.96 02-JAN-12 89743.60 02-JUL-11 17105.00 02-JUN-11 422453.00 02-MAY-11 396675.00 02-NOV-11 147183.81 02-OCT-11 62605.62 02-SEP-11 137948.41 03-AUG-11 147053.02 03-DEC-11 81304.02 03-JAN-12 87406.97 03-JUL-11 5982.00 03-JUN-11 320176.20 03-MAY-11 261819.11 03-NOV-11 119304.56 03-OCT-11 363061.02 03-SEP-11 45598.00 04-APR-11 640235.12 04-AUG-11 598784.23 04-DEC-11 72795.10 ... Republican 29-AUG-11 941769.23 29-DEC-11 428501.42 29-JAN-11 750.00 29-JAN-12 75220.02 29-JUL-11 233423.35 29-JUN-11 1340704.29 29-MAR-11 38875.00 29-MAY-11 8363.20 29-NOV-11 407322.64 29-OCT-11 81924.01 29-SEP-11 1612794.52 30-APR-11 43004.80 30-AUG-11 915548.58 30-DEC-11 492470.45 30-JAN-12 255204.80 30-JUL-11 12249.04 30-JUN-11 2744932.63 30-MAR-11 50240.00 30-MAY-11 17803.60 30-NOV-11 809014.83 30-OCT-11 43913.16 30-SEP-11 4886331.76 31-AUG-11 1017735.02 31-DEC-11 1094376.72 31-JAN-11 6000.00 31-JAN-12 869890.41 31-JUL-11 12781.02 31-MAR-11 62475.00 31-MAY-11 301339.80 31-OCT-11 734601.83Name: contb_receipt_amt, Length: 1183, dtype: float64
In [14]:
def trasform_date(d): day,month,year = d.split('-') month = months[month] return "20" year '-' str(month) '-' day
In [17]:
#将表中日期格式转换为'yyyy-mm-dd'。日期格式,通过函数加map方式进行转换table['contb_receipt_dt'] = table['contb_receipt_dt'].apply(trasform_date)
In [18]:
table.head()
Out[18]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party
0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 2011-6-20 NaN NaN NaN SA17A 736166 Republican
1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 2011-6-23 NaN NaN NaN SA17A 736166 Republican
2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 2011-7-05 NaN NaN NaN SA17A 749073 Republican
3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 2011-8-01 NaN NaN NaN SA17A 749073 Republican
4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 2011-6-20 NaN NaN NaN SA17A 736166 Republican
In [19]:
#查看老兵(捐献者职业)DISABLED VETERAN主要支持谁 :查看老兵们捐赠给谁的钱最多table['contbr_occupation'] == 'DISABLED VETERAN'
Out[19]:
0 False1 False2 False3 False4 False5 False6 False7 False8 False9 False10 False11 False12 False13 False14 False15 False16 False17 False18 False19 False20 False21 False22 False23 False24 False25 False26 False27 False28 False29 False ... 536011 False536012 False536013 False536014 False536015 False536016 False536017 False536018 False536019 False536020 False536021 False536022 False536023 False536024 False536025 False536026 False536027 False536028 False536029 False536030 False536031 False536032 False536033 False536034 False536035 False536036 False536037 False536038 False536039 False536040 FalseName: contbr_occupation, Length: 536041, dtype: bool
In [21]:
old_bing_df = table.loc[table['contbr_occupation'] == 'DISABLED VETERAN']
In [22]:
old_bing_df.groupby(by='cand_nm')['contb_receipt_amt'].sum()
Out[22]:
cand_nmCain, Herman 300.00Obama, Barack 4205.00Paul, Ron 2425.49Santorum, Rick 250.00Name: contb_receipt_amt, dtype: float64
In [23]:
table['contb_receipt_amt'].max()
Out[23]:
1944042.43
In [24]:
#找出候选人的捐赠者中,捐赠金额最大的人的职业以及捐献额 .通过query("查询条件来查找捐献人职业")table.query('contb_receipt_amt == 1944042.43')
Out[24]:
cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party
176127 C00431445 P80003338 Obama, Barack OBAMA VICTORY FUND 2012 - UNITEMIZED CHICAGO IL 60680 NaN NaN 1944042.43 2011-12-31 NaN X * SA18 763233 Democrat
来源:
python支持eval函数,可以把一个字符串当作python语句执行,具体你可以看看eval函数的使用方法
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流