写在前面:
本文是在个人学习实践中总结,如有类似需要,仅供参考。
-
循环获取指定列的单个数据,处理后保存到列表中
- import csv
- import geohash
- jingdu=[]
- weidu=[]
- Value=[]
- def read_csv():
- with open("train.csv",'r') as fp:
- reader=csv.DictReader(fp)
- for x in reader:
- # 获取geohashed_end_loc列中的数据并存储到列表中
- value=x['geohashed_end_loc'] #geohashed_end_loc为CSV文件其中一个列名
- Value.append(value)
- #对数据进行处理,并存储到列表中
- location1 = geohash.decode(value)
- jingdu.append(location1[0])
- weidu.append(location1[1])
- read_csv()
-
获取指定列的全部数据保存到列表中
- import pandas as pd
- df = pd.read_csv('工作簿1.csv')
- value=df[['姓名', '学院', '学号', '联系方式']] #CSV文件中的列名
- # 把series转换成list:方法1 df['a'].values.tolist() 方法2:df['a'].tolist()
- a=value['姓名'].values.tolist()
- print(a)
-
向CSV中写入数据
- import pandas as pd
- #字典中的key值即为csv中列名
- dataframe = pd.DataFrame({'标题1':jingdu,'标题2':weidu}) #jingdu、weidu为数据列表
- #将DataFrame存储为csv,index表示是否显示行名,default=True
- dataframe.to_csv("train2.csv",index=True,sep=',')
-
向CSV中追加行
- import csv
- #对csv文件进行写入操作,mode="w"表示操作模式为只写,如文件不存在则自动创建文件覆盖写入
- with open(r"2.csv",mode="w",newline="",encoding="utf8") as cf:
- wf=csv.writer(cf)
- wf.writerow(["name", "money"]) #写入标题行
- data = [['lili','10'],['lili','115'],['lili','20']]
- for i in data:
- wf.writerow(i)
- #末尾追加写入,文件必须已存在
- with open(r"2.csv",mode="a",newline="",encoding="utf8") as cfa:
- wf = csv.writer(cfa)
- data2 = [['lili','10']]
- for i in data2:
- wf.writerow(i)
-
向CSV中追加列
- import pandas as pd
- import numpy as np
- data = pd.read_csv(r'2.csv') #打开一个csv,得到data对象
- data['追加'] = data1 #将data1列表数据插入新列
- data.to_csv(r"3.csv",mode = 'a',index =False)
- #保存到csv, mode=a,以追加模式写入,hreade表示列名,默认为true,index表示行名,默认为true,再次写入不需要行名
-
CSV数据集成
- import pandas as pd
- df = pd.read_csv('工作簿1.csv') #包含列名: '姓名', '学院', '学号', '联系方式', '贫困生'
- dd = pd.read_csv('2.csv') #包含列名: '姓名', '值班节数'
- data = pd.merge( dd, df,on=['姓名'], how='left') # pandas csv表左连接 dd df 谁在前以谁为准,“姓名”为公共列名
- data = data[['姓名', '学院', '学号', '联系方式', '贫困生', '值班节数']]
- # pandas写入表格数据
- data.to_csv(r'data2.csv', encoding='utf-8-sig')