pandas積累

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()
image.png

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ò):

常見(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

注:


重命名時(shí)需注意

指定列重命名

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.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')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 目錄 1.創(chuàng)建對(duì)象 2.查看數(shù)據(jù) 3.寫(xiě)入數(shù)據(jù)(read_csv) 4.寫(xiě)出/導(dǎo)出數(shù)據(jù)(to_csv) 5.讀取行...
    鯨魚(yú)醬375閱讀 1,259評(píng)論 0 2
  • pandas簡(jiǎn)介pandas是python的一個(gè)數(shù)據(jù)分析包,最初由AQR Capital Management于2...
    隕星落云閱讀 14,862評(píng)論 9 40
  • 1,讀取cs training_raw = pd.read_csv('dataset/adult.data', h...
    記記筆記閱讀 969評(píng)論 0 0
  • (文章待完善)注意1:pandas本身包含很多函數(shù)pandas.method(obj),通常簡(jiǎn)寫(xiě)為pd.metho...
    馬爾代夫Maldives閱讀 5,977評(píng)論 0 15
  • 導(dǎo)入數(shù)據(jù) pd.read_csv(filename,encoding='gbk',sep='\t'):從CSV文件...
    dingtom閱讀 315評(píng)論 0 0

友情鏈接更多精彩內(nèi)容