vdu*_*b32 5 python dataframe pandas
目前,我正在与a工作pandas.DataFrame,我需要将整个数据框除以某一值(除一行以外)。将整个数据帧除以一个值很容易,但是我想保持其中一行完全相同。例如,如果我有一个如下数据框:
A B C D
10000 10000 10000 10000
10000 10000 10000 10000
10000 10000 10000 10000
10000 10000 10000 10000
1 1 1 1
10000 10000 10000 10000
10000 10000 10000 10000
Run Code Online (Sandbox Code Playgroud)
我想将所有行除以值1000,除第5行外,我希望所有值都保持与1相同。因此,新的数据帧如下所示:
A B C D
10 10 10 10
10 10 10 10
10 10 10 10
10 10 10 10
1 1 1 1
10 10 10 10
10 10 10 10
Run Code Online (Sandbox Code Playgroud)
有没有简单的方法可以做到这一点?我觉得我缺少一些非常基本的东西。我尝试使用loc,iloc,mul和div,但无法使它们同时工作。
如果保存感兴趣的行,然后将整个数据帧除以所需的值。然后您可以恢复感兴趣的行。
def df_divide_by_excect_row(in_df, divisor, row_to_ignore):
row_to_save = in_df.iloc[row_to_ignore]
new_df = in_df / divisor
new_df.iloc[row_to_ignore] = row_to_save
return new_df
Run Code Online (Sandbox Code Playgroud)
import pandas as pd
df = pd.read_fwf(StringIO(u"""
A B C D
10000 10000 10000 10000
10000 10000 10000 10000
10000 10000 10000 10000
10000 10000 10000 10000
1 1 1 1
10000 10000 10000 10000
10000 10000 10000 10000"""), header=1)
print(df)
print(df_divide_by_excect_row(df, 1000, 4))
Run Code Online (Sandbox Code Playgroud)
A B C D
0 10000 10000 10000 10000
1 10000 10000 10000 10000
2 10000 10000 10000 10000
3 10000 10000 10000 10000
4 1 1 1 1
5 10000 10000 10000 10000
6 10000 10000 10000 10000
A B C D
0 10.0 10.0 10.0 10.0
1 10.0 10.0 10.0 10.0
2 10.0 10.0 10.0 10.0
3 10.0 10.0 10.0 10.0
4 1.0 1.0 1.0 1.0
5 10.0 10.0 10.0 10.0
6 10.0 10.0 10.0 10.0
Run Code Online (Sandbox Code Playgroud)