python 常见文件读取

1. txt 文件读取

read 将整篇文章读成一个str
readline方法是每次读取的是文件的一行内容,并且方法的返回值为str字符串类型

③ readlines方法读取的是整个文件,方法的返回值为list列表

把文件按自己喜欢的格式读取就好

txt按csv读取

只需要规定按什么分割 data01 = pd.read_csv(r’event.uniq.txt’, sep=‘\t’, encoding=‘utf-8’,names=[‘1’, ‘2’, ‘3’])
按Tab分割

str转为字典:

import json
txt = ‘{‘a’:1,‘b’:5}’
dic = json.loads(txt)

多个列表字符串拼接

str1= ''
for i in str1:
    st1 += i
    print(st1)

按行直接存入 csv 而不是先 append 到一个list 中

with open(f'pre.csv', 'w', encoding='utf-8') as f, open(text, 'r', encoding='utf-8') as f_1:
    text_list = f_1.readlines()
    for idx1, sample in enumerate(y_pred):
        tags = []
        tags.append(text_list[idx1])
        for idx, p in enumerate(sample):
            if p == 1:
                tags.append(IO2STR[idx2tag[idx]])
        f.write(",".join(tags) + '\n')

f.write(line+'\n') 取消自动换行,将line全部写入之后 自己\n换行
join 是说以什么为分隔,“,”.join(tags)是以逗号分隔
tags 是要连接的元素序列、字符串、元组、字典

append的使用

会填充几个[]?
每一次 appand 是向下填充
ms = pd.concat([x2, x1], axis=1) # 0 是纵向将x1向下填充, 1 是横向x1横向填充

list 拼接

https://blog.csdn.net/Keeplingshi/article/details/72667582

pandas 取行列

read_csv 没办法只取其中几列

运用python读取csv文件某几列
iloc只能用数字索引,不能用索引名,是[]而不是()

df.iloc[0] #第0行
df.iloc[:,2] # 第2列
df.iloc[0:2,0:2] #0、1行,0、1列
df.iloc[[0,2],[1,2,3]] #第0、2行,1、2、3列

loc只能通过index(行)和columns(列)索引名来取,不能用数字索引,一般的loc的行取可用数字索引,但列名不可用数字索引

df.loc[‘one’,‘a’]#one行,a列
df.loc[‘one’:‘two’,‘a’]#one到two行,a列
df.loc[‘one’:‘two’,‘a’:‘c’]#one到two行,a到c列
df.loc[‘one’:‘two’,[‘a’,‘c’]]#one到two行,ac列

按某列元素删除 dataframe 一行或列

import numpy as np
import pandas as pd
arr=np.ones([2,3])
df=pd.DataFrame(arr,index=['第一行','第二行'],columns=['第一列','第二列','第三列'])
dfr=df.drop('第一列',axis=1)  #删除'第一列'这列,axis=1表示是列
'''但要注意,默认情况下,drop命令是返回一个删除了'第一列'之后的DataFrame,
并不是在df里把'第一列'删了'''
print(dfr)
print(df)

查看某列各元素出现的次数

print(df4[“英语”].value_counts()) # 查看英语列各元素出现的次数

添加列名

df4.columns = [1, 2] # 添加列名

按列排序

方法一
df.sort_values([“column_name1”, “column_name2”] , inplace=True, ascending=True)

方法二:(必须有列名)
df4.columns = [1, 2] # 添加列名
df4.sort_values(by=2, inplace=True, ascending=True)

pandas 多维数组去重

df12 = df.drop_duplicates(subset=0, keep=‘first’, inplace=False)
在这里插入图片描述

pandas替换

df.apply(lambda x:x.replace(‘nan%’,‘0.00%’))

pandas read_csv

不可以设置头和列的名字方便后面读取?
有一些按','分割不好的可以读取时候跳过 error_bad_lines=False
index 是列序号 header是头序号

dataframe打印不省略

import pandas as pd

# 行不限制
pd.set_option('display.max_rows', None)

# 列不限
pd.set_option('expand_frame_repr', False)

list 转 str

x = ms_df.iloc[:, 0]
words = jieba.lcut("".join(x))

根据位置设置 loc 和 iloc

我们可以利用索引或者标签确定需要修改值的位置。

df.iloc[2,2] = 1111
df.loc['20130101','B'] = 2222
 
"""
             A     B     C   D
2013-01-01   0  2222     2   3
2013-01-02   4     5     6   7
2013-01-03   8     9  1111  11
2013-01-04  12    13    14  15
2013-01-05  16    17    18  19
2013-01-06  20    21    22  23
"""

按行或列设置

df['F'] = np.nan
"""
             A     B     C   D   F
2013-01-01   0  2222     2   3 NaN
2013-01-02   4     5     6   7 NaN
2013-01-03   8     0  1111  11 NaN
2013-01-04  12     0    14  15 NaN
2013-01-05  16     0    18  19 NaN
2013-01-06  20     0    22  23 NaN
"""

根据条件设置

如果现在的判断条件是这样, 我们想要更改B中的数, 而更改的位置是取决于 A 的. 对于A大于4的位置. 更改B在相应位置上的数为0.

df.B[df.A>4] = 0
"""
                A     B     C   D
2013-01-01   0  2222     2   3
2013-01-02   4     5     6   7
2013-01-03   8     0  1111  11
2013-01-04  12     0    14  15
2013-01-05  16     0    18  19
2013-01-06  20     0    22  23 
"""

正则内容

https://www.jb51.net/article/238575.htm
删除某个字符前的内容

s = "21-2"
# 方法一(通用)
# 找到‘-’的索引值,然后加一取出减号后面的值
index = s.find('-')+1
print(s[index:])
# 方法二(手工计算便宜)
# 数偏移量
print(s[3:])
# 方法三(取巧,利用-分隔)
# 已‘-’为分隔符,取后面的内容
print(s.split('-')[1])
# text是带有转义字符的字符串
new_str= ''.join(str(text).split())

%s 字符串 (采用str()的显示)
%d 十进制整数

write 不换行方法

f.write('%s,%s\n' %(text_list[idx1], (",".join(tags))))

f.write(line+‘\n’)
写入的文件默认在一行显示。每次完成写入后,自动换行到下一行,下次写入时便会在下一行写入。

json

json.dumps()函数解析

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪里摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值