本文主要是介绍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)) #返回值:<type 'dict'>
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)
<ipython-input-15-6bc7f041d391> in <module>()
----> 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-bbbs_data["real_label"] = bbs_data.apply(lambda row:func(row[2],row[3]),axis = 1)
dataframe 某列的值根据其他列的值计算得来
pRec = {}
import functoolsdef 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
收集计算过程中的中间数据
我觉得python确实是比较容易入门的语言,代价是它带来的不稳定性确实也是比较高,需要积累踩坑
欢迎大家关注我的个人bolg,知乎,更多代码内容欢迎follow我的个人Github,如果有任何算法、代码、转行疑问都欢迎通过公众号发消息给我。
这篇关于Python踩坑指南(第一季)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!