python parsal_Python踩坑指南(第一季)

最近在python开发的过程中,发现了一些比较有意思的问题,确实让自己在开发过程中被恶心了一把,所以开了这个连续的更新博文,之后会持续的按第一第二第三这种版本下去,更新一些比较有意思的python代码问题。

with open('/path/to/file', 'r') as f:

print(f.read())

IO读取采用with形式,避免忘记close,否则会产生很神奇的结果

embereding_data.drop_duplicates(keep='first',inplace=True)

python 中删除重复项 如果在原来数据上删除重复项,就要加入inplace=True

否则 只是保存一个副本!!!

pd.read_csv(filename,error_bad_lines=False)

pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 3, saw 2解决办法

在使用pandas读取csv文件时报以上错误,解决办法如左

加上error_bad_lines=False就可以完美解决了

str = " ".join(list(map(str, l)))

myList = ['a','b','c','d'] myString = ",".join(myList ) 当myList含有数字的时候这种方法就会报错 因此需要转为str

json.loads('key':value)

value不可以为set、tuple

d3='{"Message":"已注销帐户。\r\n\r\n使用者:\r\n\t安全"}'

j=json.loads(d3,strict=False,encoding='utf-8')

print(type(j)) #返回值:

print(j['Opcode'].encode('u8')) #返回值:信息

使用json.loads时,如果原字符串中包含有 \r\n\t等字符,则会提示报错,

修改参数strict=False即可

说明:"If strict is False (True is the default), then control characters will be allowed inside strings. Control characters in this context are those with character codes in the 0-31 range, including '\t' (tab), '\n', '\r' and '\0'."

data['county_route_index'] = data.apply(lambda x: str(x.start_county_cd) + '_' + str(x.end_county_cd),

axis=1)

生成county_route_index字段示例310112.0_320583.0,而start_county_cd、end_county_cd为整型(int64)

解决办法:

1.str(x.start_county_cd)改为str(int(x.start_county_cd))

2.df['col3'] = df['col1'].map(str) + '_' + df['col2'].map(str)

arr = (12,[1,3,3,4],'b')

arr[1]+=[6]

---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

in ()

----> 1 arr[1]+=[6]

TypeError: 'tuple' object does not support item assignment

但是实际上却操作成功:

In [16]: arr

Out[16]: (12, [1, 3, 3, 4, 6], 'b')

不要混合使用list和tuple的时候使用concat操作

def func(a,b):

if a ==1:

return b

else:

return 1-b

bbs_data["real_label"] = bbs_data.apply(lambda row:func(row[2],row[3]),axis = 1)

dataframe 某列的值根据其他列的值计算得来

pRec = {}

import functools

def check_is_key_param(f):

global pRec

@functools.wraps(f)

def wrapper(*args, **kwargs):

pRec.update(f(*args, **kwargs))

return f(*args, **kwargs)

return wrapper

收集计算过程中的中间数据

我觉得pythons确实是比较容易入门的语言,代价是它带来的不稳定性确实也是比较高,需要积累踩坑

欢迎大家关注我的个人bolg,知乎,更多代码内容欢迎follow我的个人Github,如果有任何算法、代码、转行疑问都欢迎通过公众号发消息给我。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值