Python Pandas-在值满足特定条件的数据框中替换所有值

时间:2020-04-27 14:40:50

标签: python pandas

我有一个数据框,其中包含表示为字符串的数字,该数字使用逗号分隔符(例如150,000)。还有一些值用“-”表示。

我正在尝试将所有表示为字符串的数字转换为浮点数。 “-”将保持不变。

我当前的代码使用for循环迭代每个列和行,以查看每个单元格是否有逗号。如果是这样,它将删除逗号,然后将其转换为数字。

这在大多数情况下都可以正常工作,除了某些数据框具有重复的列名,这就是它崩溃的时候。

是否有更有效的方法来进行此更新(即不使用循环),并且还能避免出现重复的列名的情况?

当前代码:

    for col in statement_df.columns: 
    row = 0
    while row < len(statement_df.index):

        row_name = statement_df.index[row]

        if statement_df[col][row] == "-":
            #do nothing
            print(statement_df[col][row])

        elif statement_df[col][row].find(",") >= 0:
            #statement_df.loc[col][row] = float(statement_df[col][row].replace(",",""))
            x = float(statement_df[col][row].replace(",",""))
            statement_df.at[row_name, col] = x
            print(statement_df[col][row])

        else:

            x = float(statement_df[col][row])
            statement_df.at[row_name, col] = x
            print(statement_df[col][row])

        row = row + 1

2 个答案:

答案 0 :(得分:1)

在数据框本身上使用str.replace(',', '')

对于如下所示的数据框

Name  Count
Josh  12,33
Eric  24,57
Dany  9,678

像这样应用

df['Count'] = df['Count'].str.replace(',', '')
df

它将为您提供以下输出

   Name Count
0  Josh  1233
1  Eric  2457
2  Dany  9678

答案 1 :(得分:0)

您可以为此使用<ion-tabs tabbar #myTabs id="myTabs"> <ion-tab [root]="tab1Root" tabTitle="tab 1" ></ion-tab> <ion-tab [root]="tab2Root" tabTitle="tab 2" ></ion-tab> <ion-tab [root]="tab4Root" tabTitle="tab 3" ></ion-tab> <ion-tab [root]="tab3Root" tabTitle="tab 4" ></ion-tab> <ion-tab [root]="tab5Root" tabTitle="tab 5" ></ion-tab> </ion-tabs> 功能-

iloc

for idx in range(len(df.columns)): df.iloc[:, idx] = df.iloc[:, idx].apply(your_function) 中的代码应该能够处理一行中的输入。例如-

your_function