python字符反轉(zhuǎn)
原文鏈接:https://blog.csdn.net/a1007720052/article/details/82911813
s = 'abcd'
s[::-1]
#dcba
s[::-2]
#db
Excel打開(kāi)csv文件亂碼
可先用記事本打開(kāi),再通過(guò)記事本保存文件,保存時(shí)選擇ANSI編碼。(Excel默認(rèn)編碼格式是ANSI編碼)
Pandas 較長(zhǎng)數(shù)字?jǐn)?shù)據(jù)導(dǎo)出csv文件后變成科學(xué)計(jì)數(shù)法(帶E)的解決辦法
通過(guò)把每條數(shù)據(jù)轉(zhuǎn)變成字符串類(lèi)型后加上‘\t’字符就可以了。
原文鏈接:https://blog.csdn.net/qq_39290225/article/details/107633758
def deal_str(data):
data = str(data)+'\t'
return data
df['平臺(tái)單號(hào)'] = df['平臺(tái)單號(hào)'].map(deal_str)
df.to_csv('D:/data/a.csv')
GPS數(shù)據(jù)相關(guān)
python自己實(shí)現(xiàn)geohash
python安裝geohash包,報(bào)錯(cuò)解決方式:

geohash在本地的文件夾
C:\ProgramData\Anaconda3\Lib\site-packages\geohash
geohash前6位字符的精度為600m,即若兩個(gè)gps位置的geohash編碼前6位相同,則地址不超過(guò)600m。
路徑
讀取路徑下的所有文件名
import os
for filename in os.listdir(r'c:\windows'):
print filename
變量賦值、引用
不可變數(shù)據(jù)類(lèi)型
對(duì)于字符串、整數(shù)型、元組等不可變的數(shù)據(jù)類(lèi)型的值,變量保存值本身。
spam = 42
cheese = spam
spam = 100
>>>spam
100
>>>cheese
42
可變數(shù)據(jù)類(lèi)型
對(duì)于list、字典等可變數(shù)據(jù)類(lèi)型的值,變量保存對(duì)值的引用,而非實(shí)際值。要保存實(shí)際值,而非引用,可使用a_list.copy()
spam = [0,1,2]
cheese = spam
cheese[1] = 'a'
>>>spam
[0,'a',1,2]
>>>cheese
[0,'a',1,2]
刪除list元素
Del刪除指定索引處元素,remove刪除指定元素
a_list = [1,3,5]
del a_list[2]
a_list.remove(5)
list排序
a_list.sort()
#逆序
a_list.sort(reverse = True)
按照"ASCII"字符順序,大寫(xiě)字母排在小寫(xiě)字母之前。
將大csv拆為多個(gè)小csv(chunksize分塊)
data = pd.read_csv(open('trans.csv'),chunksize = 25000,header = None,sep = '\t')
i = 0
for chunk in data:
chunk.to_csv('trans_out{}.to_csv'.format(i))
print(chunk.shape)
print(i)
i += 1
計(jì)算每個(gè)字段的空值數(shù)量
col_nm = data1.isnull().sum().index.tolist()
null_num = data1.isnull().sum().values.tolist()
a = pd.DataFrame()
a['字段名'] = col_nm
a['空值數(shù)量'] = null_num
選取某列不為空值的行
df[df['id'].notnull()]
選取某列為空值的行
df[df['id'].isnull()]
list元素從小到大排序
l2 = [12, 34, 21, 45, 12, 7, 2]
l3 = sorted(l2)
某些列滿足特定條件,改變另外某些列的值
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3, 4], "B": list('abcd'), 'C': [1.2, 2.3, 3.4, 4.5]})
print(df) # 看一看df
df.loc[df.A > 2, 'B'] = 'changed' # 關(guān)鍵句
print(df)
list轉(zhuǎn)df
pd.DataFrame(node2_list,columns = ['uid'])
兩個(gè)list的交集、并集、差集
交集:
#方法一:
a=[2,3,4,5]
b=[2,5,8]
tmp = [val for val in a if val in b]
print tmp
#[2, 5]
#方法二
print list(set(a).intersection(set(b)))
#方法二比方法一快很多!
并集:
list(set(a).union(set(b)))
差集:
list(set(b).difference(set(a))) # b中有而a中沒(méi)有的 非常高效!
jupyter誤刪
輸入history
兩個(gè)list循環(huán)的簡(jiǎn)介寫(xiě)法
[x for x in list1 if x in list2]
去除空白字符
s = 'fh '
s.strip()
#s = 'fh'
對(duì)list做差分
#賭博偵測(cè)
wo = [7, 5, 7, 3, 5, 1, 2]
diff = [ wo[i]-wo[i+1] for i in range(len(wo)-1) ]
print(diff)
計(jì)算list中某個(gè)元素連續(xù)出現(xiàn)次數(shù)最大值
import itertools
s = [-175, -842, -187, -66, -1, -1, -148, -17, -32, -35, 35, -1, -1, -1, -278, 278, -432,-92, -25, 549, -666, -45, -547, -38, -7, -101,-28, -43, -31, -4, 1510, -1958, -40, -25, -7, -1, -1, -1, -1, -15]
a=[len(list(v)) for k,v in itertools.groupby(s) if k==-1]
print('-1連續(xù)出現(xiàn)的最大次數(shù)為:%d'%max(a))
一次性取出指定一組key對(duì)應(yīng)的value
from operator import itemgetter
keys = ['a', 'b', 'j']
itemgetter(*keys)(d_dict)
將兩個(gè)list轉(zhuǎn)化為一對(duì)一的字典形式
list1 = ['key1','key2','key3']
list2 = ['1','2','3']
dict(zip(list1,list2))
{'key1':'1','key2':'2','key3':'3'}
將大的csv拆為多個(gè)小的csv,并保存
指定每500000行保存為一個(gè)csv文件。
import pandas as pd
rows = pd.read_csv("csvfile.csv", chunksize=500000)
for i, chuck in enumerate(rows):
chuck.to_csv('out{}.csv'.format(i)) # i is for chunk number of each iteration
判斷兩個(gè)list是否為包含關(guān)系(父子集關(guān)系)
a = [1,2]
b = [1,2,3]
c = [0, 1]
set(b) > set(a)
set(b) > set(c)
返回
True
False
畫(huà)多個(gè)子圖拼在一起
plt.figure(figsize=(10, 3))
plt.subplot(1, 2, 1)
nx.draw_networkx(part_G,labels = None,with_labels = False,node_color = color_train)
plt.title('連通子圖編號(hào)%d-輸入'%i)
plt.subplot(1, 2, 2)
nx.draw_networkx(part_G,labels = None,with_labels = False,node_color = color_train)
plt.title('連通子圖編號(hào)%d-輸出'%i)
plt.show()

python顏色表

df按照某list排序
#df中的card按照node_list排序(gcn算法實(shí)現(xiàn)中用到)
#2.構(gòu)建對(duì)應(yīng)標(biāo)簽
node_list = list(e.nodes())
#子網(wǎng)中的卡對(duì)應(yīng)的標(biāo)簽
df = label_df[label_df['card'].isin(node_list)]
#將子網(wǎng)的卡按照鄰接矩陣的卡順序排序
df['card'] = df['card'].astype('category')
df['card'].cat.reorder_categories(node_list, inplace=True)
# inplace = True,使 df生效
df.sort_values('card', inplace=True)
array獲取每行的最大值、最大值所在位置
#d為gcn模型輸出的5229*3維數(shù)組,需得到標(biāo)簽5229*1
idx = np.argmax(d, axis=1)
pro = np.amax(d, axis=1)
統(tǒng)計(jì)各元素出現(xiàn)次數(shù)
from collections import Counter
Counter(array)
df中:
df['col1'].value_counts()
截取指定字符串
str1 = "Hello.python";
str2 = ".";
print str1.index(str2);#結(jié)果5
print str1[:str1.index(str2)] #獲取 "."之前的字符(不包含點(diǎn)) 結(jié)果 Hello
print str1[str1.index(str2):] ; #獲取 "."之前的字符(包含點(diǎn)) 結(jié)果.python
去字符化
a = '{a,b,c}'
b = eval(a)
#b = {a,b,c}
匹配或包含模式的字符串
In [103]: pattern = r'[0-9][a-z]'
In [104]: pd.Series(['1', '2', '3a', '3b', '03c']).str.contains(pattern)
Out[104]:
0 False
1 False
2 True
3 True
4 True
dtype: bool
或者是否元素完整匹配一個(gè)正則表達(dá)式
In [105]: pd.Series(['1', '2', '3a', '3b', '03c']).str.match(pattern)
Out[105]:
0 False
1 False
2 True
3 True
4 False
dtype: bool
只包含數(shù)字的字符串的正則表達(dá)式寫(xiě)法
var reg = new RegExp('^[0-9]+$');
要么
var reg = new RegExp('^\\d+$');
包含數(shù)字和小數(shù)點(diǎn)的字符串的正則表達(dá)式寫(xiě)法:
r'^[0-9]+\.[0-9]+$'
刪除字符中全部為數(shù)字的行
#查找字符串中以某字符開(kāi)頭的行
#以重慶市開(kāi)頭的名稱(chēng)
cut_new[cut_new['原名稱(chēng)'].str.startswith('重慶市')]
#以重慶市結(jié)尾的名稱(chēng)
cut_new[cut_new['原名稱(chēng)'].str.endswith('重慶市')]
#包含重慶市的名稱(chēng)
cut_new[cut_new['原名稱(chēng)'].str.contains('重慶市')]
常見(jiàn)報(bào)錯(cuò):

解決辦法:解決辦法

#刪掉全部為數(shù)字的名稱(chēng)
new = cut_new[~cut_new['原名稱(chēng)'].str.isdigit()]
print(new.shape)
#重置索引
new = new.reset_index(drop=True)
df按某列的中文拼音順序重新行排序
a = ['完','莫', 'm', '莫啊里','啊','a', '趙']
out = sorted(a, key=lambda x: x.encode('gbk')) # ['a', 'm', '啊', '莫', '莫啊里', '完', '趙']
商品名稱(chēng)清洗案例:
#各字段不同取值數(shù)
print(name_cut.nunique())
#按照商品名稱(chēng)去重
name_cut = name_cut.drop_duplicates('原名稱(chēng)')
print(name_cut.shape)
#按中文拼音排序
#將名稱(chēng)作為索引
cut_new = name_cut.set_index('原名稱(chēng)')
print(cut_new.shape)
#將名稱(chēng)按照拼音排序
rank = sorted(list(cut_new.index), key=lambda x: x.encode('gbk'))
print(len(rank))
#將索引按照新順序排序
cut_new = cut_new.reindex(index =rank )
print(cut_new.shape)
cut_new = cut_new.reset_index()
cut_new
cut_new.head()
批量替換元素
df = df.replace({"單身薯片":'單身糧薯片',"達(dá)利薯片":'可比克薯片','董薯片':'董小姐薯片','盼薯片':'盼盼薯片','好友薯片':"好麗友薯片",'好麗薯片':"好麗友薯片",'好友趣薯片':"好麗友薯片"})
找出包含特定字符的行
df=data[data['name'].str.contains("薯片")]
排列組合
from itertools import combinations
combinations(str_list, 2)
去除array中的nan、inf等
以0替代
a = np.array([1,2,-1,np.nan,np.inf])
a
array([ 1., 2., -1., nan, inf])
np.nan_to_num(a)
array([ 1.00000000e+000, 2.00000000e+000, -1.00000000e+000,
0.00000000e+000, 1.79769313e+308])
標(biāo)準(zhǔn)化
#假設(shè)上面有一個(gè)DataFrame叫做data
data2 = (data-data.min())/(data.max()-data.min())#即簡(jiǎn)單實(shí)現(xiàn)標(biāo)準(zhǔn)化
data2 = (data-data.mean())/(data.std())
計(jì)算分位數(shù)
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 中位數(shù)
print(np.median(a))
# 25%分位數(shù)
print(np.percentile(a, 25))
# 75%分位數(shù)
print(np.percentile(a, 75))
連續(xù)數(shù)據(jù)離散化
pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False)
bins:劃分區(qū)間
right:是否包含右端點(diǎn)
precision:精度
include_lowest:是否包含左端點(diǎn)
一行拆分為多行
一行l(wèi)ist拆為多行
參考
#對(duì)黃牛聚類(lèi)的卡,分別對(duì)每張卡打標(biāo)
card_label=np.dstack((np.repeat(a.判定結(jié)果.values,list(map(len,a.card.values))),np.concatenate(a.card.values)))
pd.DataFrame(data=card_label[0],columns=['判定結(jié)果','card'])
同一行數(shù)據(jù)的多個(gè)值拆開(kāi)
參考
import pandas as pd
df = pd.DataFrame({'Country': ['China,US', 'Japan,EU', 'UK,Australia', 'Singapore,Netherland'],
'Number': [100, 150, 120, 90],
'Value': [1, 2, 3, 4],
'label': list('abcd')})
df_split_row = df.drop('Country', axis=1).join(
df['Country'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('Country'))
github進(jìn)入、退出python環(huán)境
#進(jìn)入python環(huán)境
D:\Softwares\cmder
λ python
#退出
exit()
github 源代碼下載至指定文件夾
首先將當(dāng)前路徑跳轉(zhuǎn)至指定文件夾路徑下,
C:\Users\Hooper
λ cd Desktop/Recomder-system-20191210/code
其次在指定文件夾路徑下復(fù)制代碼
C:\Users\Hooper\Desktop\Recomder-system-20191210\code
λ git clone https://github.com/qcymkxyc/RecSys.git
跳過(guò)錯(cuò)誤
stderr
用于重定向錯(cuò)誤信息至某個(gè)文件。
這里我們先定向錯(cuò)誤信息都寫(xiě)入errorlog_abc.txt
__stderr__ = sys.stderr #將當(dāng)前默認(rèn)的錯(cuò)誤輸出結(jié)果保存為_(kāi)_stderr__
sys.stderr = open('errorlog_abc.txt', 'a') #將后續(xù)的報(bào)錯(cuò)信息寫(xiě)入對(duì)應(yīng)的文件中
try except
try...except...檢測(cè)一段代碼,定位錯(cuò)誤類(lèi)型與錯(cuò)誤明細(xì)。
a = [1,2,3]
try:
a[3]
except Exception as e:
print('錯(cuò)誤類(lèi)型是',e.__class__.__name__)
print('錯(cuò)誤明細(xì)是',e)
輸出結(jié)果為:
錯(cuò)誤類(lèi)型是 IndexError
錯(cuò)誤明細(xì)是 list index out of range
trace模塊的traceback函數(shù)
講錯(cuò)誤明細(xì)的結(jié)果保存在指定文件夾,若不指定文件夾,錯(cuò)誤明細(xì)直接在終端輸出。
相關(guān)博客
a = [1,2,3]
try:
a[3]
except Exception as e:
traceback.print_exc(file = open('E:/coding/errorlog_abc.txt','a'))
字典
setdefault
如果鍵在字典中,返回這個(gè)鍵所對(duì)應(yīng)的值。如果鍵不在字典中,向字典中插入這個(gè)鍵,并且以default為這個(gè)鍵的值,并返回 default。default的默認(rèn)值為None.
相關(guān)博客介紹
result = dict.setdefault(key, default)
def _init_train(origin_data):
"""初始化訓(xùn)練集數(shù)據(jù)"""
train = dict()
for i in origin_data.index:
user,item = origin_data.loc[i]['open_id'],origin_data.loc[i]['coupon_id']
train.setdefault(user, {})
train[user][item] = 1
#輸出結(jié)果為每個(gè)用戶購(gòu)買(mǎi)的券
return train
對(duì)其他列求合
#將聚類(lèi)轉(zhuǎn)賬網(wǎng)絡(luò)由df格式轉(zhuǎn)為圖格式
def graph_net(df):
#輸入:轉(zhuǎn)賬數(shù)據(jù)
#輸出:轉(zhuǎn)出卡:轉(zhuǎn)入卡:總筆數(shù),總金額
gr = dict()
for i in df.index:
out_card,in_card = df.loc[i]['transfer_outer_card'],df.loc[i]['transfer_in_card']
gr.setdefault(out_card,{})
gr[out_card][in_card] = [df[(df['transfer_outer_card'] == out_card) &(df['transfer_in_card'] == in_card)]['trans_num'].sum(),df[(df['transfer_outer_card'] == out_card) &(df['transfer_in_card'] == in_card)]['trans_at'].sum()]
return gr
get
當(dāng)所查詢(xún)的key存在時(shí),key查詢(xún)和get查詢(xún)沒(méi)有區(qū)別。
>>> dic = {1:'This is 1', 2:'This is 2'}
>>> dic[1]
'This is 1'
>>> dic.get(2)
'This is 2'
但是當(dāng)key不存在時(shí),通過(guò)key查詢(xún)報(bào)錯(cuò),get查詢(xún)不輸出任何結(jié)果,即程序不停止。
dic = {1:'This is 1', 2:'This is 2'}
for i in [1,0,2]:
print(dic.get(i))
dic.get(0,'不存在')
輸出結(jié)果為:
This is 1
None
This is 2
out[79]':不存在'
python跳出for循環(huán)
當(dāng)for循環(huán)時(shí),如果滿足if條件,自動(dòng)迭代下一輪,跳過(guò)當(dāng)前i。
#輸出結(jié)果存儲(chǔ)路徑
print(city)
out_path = 'md5/md5_results/' + tar + '/' + city
if os.path.exists(out_path):
continue
#shutil.rmtree(out_path)
os.makedirs(out_path)
dataFrame按某列值累加
data['new'] = data['Times'].cumsum()
dataFrame按某列從大到小排序
df.sort_values('col1',ascending = False)
dataFrame和字典轉(zhuǎn)化
訂單數(shù)據(jù)為dataframe,包含每個(gè)用戶買(mǎi)了什么禮券,先需轉(zhuǎn)化為字典形式,train為字典:key為28562個(gè)不同的用戶,values:為該用戶買(mǎi)過(guò)的禮券id(原電影數(shù)據(jù)中還有對(duì)應(yīng)的電影打分)
train = dict()
i = 0
for line in open('../data/only_order_train.csv','r'):
#跳過(guò)第一行(第一行為列名)
i += 1
if i == 1:
continue
#第一列、第二列分別為用戶和對(duì)應(yīng)的購(gòu)買(mǎi)禮券
user, item = line.strip().split(",")
#轉(zhuǎn)化為字典
train.setdefault(user, {})
#打分均為1
train[user][item] = float(1)
range 問(wèn)題
for i,val in enumerate(list1)
matplotlib
畫(huà)圖中文顯示問(wèn)題
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
負(fù)號(hào)顯示問(wèn)題
plt.rcParams['axes.unicode_minus'] = False
多個(gè)dataframe循環(huán)拼接
橫著拼接
df_list = [df1,df2,...,]
data = pd.DataFrame()
data = pd.concat([df for df in df_list],axis = 1)
merge拼接
pd.merge(df1,df3,on='name',how='outer')
how取值為:
left:只包含左列
right:只包含右列
inner:交集
outer:并集
apply函數(shù)
apply:應(yīng)用在DataFrame的行或列中;
applymap:應(yīng)用在DataFrame的每個(gè)元素中;
map:應(yīng)用在單獨(dú)一列(Series)的每個(gè)元素中。
df['val'] = df.apply(lambda row: my_min(row['val_1'], row['val_2']), axis=1)
#有時(shí)候會(huì)報(bào)錯(cuò),可改寫(xiě)為
df['name'] = df.apply(lambda x:f(x) if x.name == '列名' else x,axis = 1)
#依舊來(lái)自研究院的奇葩報(bào)錯(cuò),前兩種方式均報(bào)錯(cuò)
df['name'] = df['列名'].apply(lambda x:f(x))
將某列指定位置的元素進(jìn)行修改
#將col列指定的index位置的元素修改為0
df.loc[a.index,'col'] = 1
python讀取txt文件
按行讀取
file = open('兼職模特聯(lián)系方式.txt', 'r')
try:
while True:
text_line = file.readline()
if text_line:
print(type(text_line), text_line)
else:
break
finally:
file.close()
"""
<class 'str'> 吳迪 177 70 13888888
<class 'str'> 王思 170 50 13988888
<class 'str'> 白雪 167 48 13324434
<class 'str'> 黃蓉 166 46 13828382
"""
刪除某列
withoutSummer = odata.drop(['summer'],axis=1)
讀取Excel文件
pd.read_excel(io, sheetname=0,header=0,skiprows=None,index_col=None,names=None,
arse_cols=None,date_parser=None,na_values=None,thousands=None,
convert_float=True,has_index_names=None,converters=None,dtype=None,
true_values=None,false_values=None,engine=None,squeeze=False,**kwds)
讀取csv時(shí),自己命名列名
trans = pd.read_csv(f,header=None,sep = '\t',names=['uid','trans_tm','name','dctid','num'] )
將列名按指定順序排序
order = ['col1','col2',...]
df = df[order]
列名重命名
全部列名重命名
df = pd.DataFrame({'$a':[1,2], '$b': [10,20]})
>>> df.columns = ['a', 'b']
>>> df
a b
0 1 10
1 2 20
注:

指定列重命名
df = df.
(columns={'oldName1': 'newName1', 'oldName2': 'newName2'})
索引
將索引變?yōu)橐涣?/h2>
df.reset_index()
重置索引
df.reset_index(drop=True)
將一列變?yōu)樗饕?/h2>
data = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b","c"],columns=["A","B","C"])
print(data)
'''
A B C
a 1 2 3
b 4 5 6
c 7 8 9
'''
#將列索引為B的列變成data的行索引
print(data.set_index("B"))
'''
A C
B
2 1 3
5 4 6
8 7 9
dataframe索引
data = pd.DataFrame(np.arange(9).reshape(3,3),index=["a","b","c"])
#獲取第二、三列
print(data.ix[:,1:3])
'''
1 2
a 1 2
b 4 5
c 7 8
'''
#獲取第二行和第三行
print(data.ix[1:3,:])
'''
0 1 2
b 3 4 5
c 6 7 8
'''
df.reset_index()
df.reset_index(drop=True)
data = pd.DataFrame(np.arange(1,10).reshape(3,3),index=["a","b","c"],columns=["A","B","C"])
print(data)
'''
A B C
a 1 2 3
b 4 5 6
c 7 8 9
'''
#將列索引為B的列變成data的行索引
print(data.set_index("B"))
'''
A C
B
2 1 3
5 4 6
8 7 9
dataframe索引
data = pd.DataFrame(np.arange(9).reshape(3,3),index=["a","b","c"])
#獲取第二、三列
print(data.ix[:,1:3])
'''
1 2
a 1 2
b 4 5
c 7 8
'''
#獲取第二行和第三行
print(data.ix[1:3,:])
'''
0 1 2
b 3 4 5
c 6 7 8
'''
選取某一行
#第一行
df.iloc[0]
將多列作為索引
df.set_index(['col','col'])
計(jì)算每一列的缺失值
import pandas as pd
a=pd.read_csv(r'路徑\數(shù)據(jù)集.csv',encoding="utf-8") #這里路徑盡量用英文,我用中文做路徑的時(shí)候各種報(bào)錯(cuò)
data=pd.DataFrame()
dd=[]
cc=[]
rr=[]
for i in a.columns:
d=len(a)-a[i].count()
r=(d/len(a))*100
rate='%.2f%%' % r
print('字段名為:',str(i).ljust(10),'缺失值數(shù)量:',str(d).ljust(4),'缺失數(shù)量占比:',rate) #這里print主要是為了在腳本中觀察是否獲取到想要的數(shù)據(jù),方便調(diào)試。
dd.append(i)
cc.append(d)
rr.append(rate)
data[u'字段名為']=dd
data[u'缺失值數(shù)量']=cc
data[u'缺失數(shù)量占比']=rr
outfile=r'輸出路徑\處理后數(shù)據(jù).xls'
data.to_excel(outfile) #同樣輸出路徑盡量用英文,輸出為xls格式
缺失值處理
只選取包含缺失值的數(shù)據(jù)
df[df.isnull().values==True].drop_duplicates()
計(jì)算某列不含缺失值的個(gè)數(shù)
#某列不含缺失值的個(gè)數(shù)
df['a'].count()
#某列不含缺失值的值
df['a'].count
刪除表中全部為NA的行
df.dropna(axis=0,how='all')
刪除滿足某條件的行:
df_clear = df.drop(df[df['x']<0.01].index)
# 也可以使用多個(gè)條件
df_clear = df.drop(df[(df['x']<0.01) | (df['x']>10)].index) #刪除x小于0.01或大于10的行
刪除某列
df.drop(['col',axis = 1)
去重
去重指定列(默認(rèn)去重所有列)
df.drop_duplicates('col1')
List
list嵌套展開(kāi)
簡(jiǎn)單展開(kāi)
# 普通方法
list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]]
list_2 = []
for _ in list_1:
list_2 += _
print(list_2)
# 列表推導(dǎo)
list_1 = [[1, 2], [3, 4, 5], [6, 7], [8], [9]]
list_2 = [i for k in list_1 for i in k]
print(list_2)
復(fù)雜情況
def flat(nums):
res = []
for i in nums:
if isinstance(i, list):
res.extend(flat(i))
else:
res.append(i)
return res
list刪除指定元素
list1 = ['1','a',3]
list1.remove('a')