我正在從 csv 中讀取資料 我有一個這樣的資料框:
product_title variatons_color
T-shirt ['yellow','ornage']
T-shirt []
T-shirt ['blue','green']
我預期的資料框將如下所示
product_title variatons_color
T-shirt ['yellow','ornage']
T-shirt
T-shirt ['blue','green']
我想洗掉空串列。如何在熊貓中做到這一點?
update1
我應用了 Scott Boston、Ynjxsjmh和BENY解決方案。所有解決方案都為我的所有行填充 None 值,但我只需要為我的空串列填充 None 值。當我跑type(df.loc[0,'variations_color'])回來時str
uj5u.com熱心網友回復:
你可以試試
df['variatons_color'] = df['variatons_color'].apply(lambda lst: lst if len(lst) else '')
print(df)
product_title variatons_color
0 T-shirt [yellow, ornage]
1 T-shirt
2 T-shirt [blue, green]
uj5u.com熱心網友回復:
使用布爾檢查檢查分配
df.loc[~df['variatons_color'].astype(bool),'variatons_color'] = ''
更新
df.loc[df['variatons_color'].eq('[]'),'variatons_color'] = ''
uj5u.com熱心網友回復:
只是apply len:
df.loc[df['variations_color'].apply(len) == 0, 'variations_color'] = ''
或者
df.loc[df['variations_color'].apply(len) == 0, 'variations_color'] = np.nan
輸出:
product_title variations_color
0 T-shirt [yellow, orange]
1 T-shirt NaN
2 T-shirt [blue, green]
給定df,
df = pd.DataFrame({'product_title':['T-shirt']*3,
'variations_color':[['yellow', 'orange'],[],['blue', 'green']]})
但是,如果您的 datafame 結構是這樣的:
df = pd.DataFrame({'product_title':['T-shirt']*3,
'variations_color':['[yellow, orange]','[]','[blue, green]']})
然后,您可以使用以下內容:
df.loc[df['variations_color'] == '[]', 'variations_color'] = np.nan
輸出:
product_title variations_color
0 T-shirt [yellow, orange]
1 T-shirt NaN
2 T-shirt [blue, green]
注意第一個例子的區別
type(df.loc[0,'variations_color'])回傳一個串列
并且,第二個回傳 str。資料框的字串表示是相同的,因此您無法僅在列印時查看它來判斷。在 python 中,了解您正在使用的物件的型別(資料型別)總是很重要的。
uj5u.com熱心網友回復:
import pandas as pd
df = pd.DataFrame({'product_title':['T-shirt']*3,
'variations_color':[['yellow', 'orange'],[],['blue', 'green']]})
df['variations_color'] = df['variations_color'].apply(lambda x: None if any(eval(str(x))) == False else x)
df
uj5u.com熱心網友回復:
看這里!
import pandas as pd
from io import StringIO
data = '''
product_title variatons_color
T-shirt ['yellow','ornage']
T-shirt []
T-shirt ['blue','green']
'''
df = pd.read_csv(StringIO(data), delim_whitespace=True)
df.variatons_color = df.variatons_color.apply(eval)
df
'''
product_title variatons_color
0 T-shirt [yellow, ornage]
1 T-shirt []
2 T-shirt [blue, green]
'''
type(df.iat[0, 1])
# list
df.mask(df.applymap(len) == 0, None)
'''
product_title variatons_color
0 T-shirt [yellow, ornage]
1 T-shirt None
2 T-shirt [blue, green]
'''
完畢!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/483802.html
標籤:Python 数组 python-3.x 熊猫 列表
上一篇:計數出現在整個物件中的值子字串
下一篇:如何編輯JSON陣列?
