簡體   English   中英

使用 pandas 迭代 dataframe 並替換字符

[英]Iterating through dataframe with pandas and replacing characters

我的名為“收縮”的數據框列如下所示:

-Shrinkage
-($614)
-$0
-$0
-$0
-$0
-$0
-$0
-$0
-($125)
-$320
-$3,779
($2,482)

使用以下代碼,我嘗試使用 for 循環和 if 語句執行多個操作。 我想遍歷該列,如果 object 具有字符“(”,那么我想將其替換為字符“-”以使該數字為負數。除了查找和替換負數外,我還想刪除所有字符並將對象變為浮點數以使用它執行數學運算。

for i in ['Shrinkage']:
    if df['Shrinkage'] == '(':
        df['Shrinkage'] = df['Shrinkage'].replace({'(': '-'}).astype(float)
        df['Shrinkage'] = df['Shrinkage'].replace({'$': '', ')': '', ',': ''})
    else:
        df['Shrinkage'].replace({'$': '', ',': ''}, regex=True).astype(float)

我得到一個 ValueError: 系列的真值是不明確的。 使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

請理解我對 python 還是新手,還沒有進入復雜的代碼。 需要一些幫助。

試試這個, series.replace並使用正則表達式刪除不需要的字符。

df['Shrinkage'] = df['Shrinkage'].str.replace("\(|\$|\)|,", "")

print(df['Shrinkage'].astype(float))

output,

0     -614.0
1       -0.0
2       -0.0
3       -0.0
4       -0.0
5       -0.0
6       -0.0
7       -0.0
8     -125.0
9     -320.0
10   -3779.0
11    2482.0
Name: Shrinkage, dtype: float64

你可以這樣做:

df['Shrinkage'] = df['Shrinkage'].str.replace('\$|\)|\,', '')
df['Shrinkage'] = df['Shrinkage'].str.replace('\(', '-')
df['Shrinkage'] = df['Shrinkage'].astype(float)
print(df)


    Shrinkage
0      -614.0
1         0.0
2         0.0
3         0.0
4         0.0
5         0.0
6         0.0
7         0.0
8      -125.0
9       320.0
10     3779.0
11    -2482.0

暫無
暫無

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

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