簡體   English   中英

Python根據條件追加到dataframe列

[英]Python append to dataframe column based on condition

我想計算數據幀的一列中管道符號出現的數量,它等於5,所以我需要在現有值后面附加另一個管道(|)符號。

df2['smartexpenseid']

0      878497|253919815?HOTEL?141791520780|||305117||
1                                   362593||||35068||
2         |231931871509?CARRT?231940968972||||177849|
3       955304|248973233?HOTEL?154687992630||||93191|
4                                 27984||||5883|3242|
5    3579321|253872763?HOTEL?128891721799|92832814|||
6            127299|248541768?HOTEL?270593355555|||||
7         |231931871509?CARRT?231940968972||||177849|
8                                   831665||||80658||
9              |247132692?HOTEL?141790728905||||6249|

例如:對於第5行,(|)計數為5,因此應在現有值上添加另一個(|),對於其他行,由於count為6,我們將其保持原樣。 有人可以幫我嗎?

我嘗試了這些

if df2['smartexpenseid'].str.count('\|')==5:
    df2['smartexpenseid'].append('\|')

這使我犯了一個錯誤,說“系列的真值不明確”

並且

a = df2['smartexpenseid'].str.count('\|')
if 5 in a:
    a.index(5)

因此,您可以使用向量化的str方法 現在,您需要有條件地附加一個額外的'|' 字符。 有關更多信息,請參見遮罩的熊貓部分

m = df2['smartexpenseid'].str.count('\|') == 5
df2.loc[m, 'smartexpenseid'] = df2['smartexpenseid'][m].values + '|'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM