Python Round столбцы данных с определенным значением, если существует - PullRequest
0 голосов
/ 24 октября 2019

Мой входной фрейм данных;

A       B 
0.3     0.6
0.4     3.05
1.6     4.35
0.15    5.47
4.19    9.99

Я хочу округлить столбцы моего фрейма данных в соответствии с указанным значением, если оно существует. Мой код, как показано ниже:

rounding=0.25

df['A']=round(df['A'] - rounding + 0.5)
df['B']=round(df['B'] - rounding + 0.5)

Вывод:

A    B
1    1
1    3
2    5
0    6
4    10

Проблема в том, что если нет переменной «округления», она должна запускаться автоматически по умолчанию (0,5). Мне нужен код, который может работать для обоих вместе. Нечто подобное или другое;

if rounding==rounding:
    df['A']=round(df['A'] - rounding + 0.5)

else:
    df['A']=round(df['A'])

Я видел много тем о округлении с определенным значением, но я не мог этого увидеть.

Не могли бы вы помочь мне с этим?

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Полагаю, вы считаете отсутствующие значения - тогда замените его на 0 или другой скаляр с if-else оператором:

rounding = np.nan

rounding = 0 if rounding != rounding else rounding
print (rounding)
0

Или:

rounding = 0 if pd.isna(rounding) else rounding
print (rounding)
0

Если существует значение (не пропущенное значение):

rounding = 0.25

rounding = 0 if rounding != rounding else rounding
print (rounding)
0.25

df['A']=round(df['A'] - rounding + 0.5)
df['B']=round(df['B'] - rounding + 0.5)
print (df)
     A     B
0  1.0   1.0
1  1.0   4.0
2  2.0   5.0
3  1.0   6.0
4  5.0  10.0
1 голос
/ 24 октября 2019

После того, как в вашем dataframe будет столбец с «округлением» для каждого наблюдения (столбец, который вы должны получить путем объединения данных из другого dataframe), вы можете просто сделать:

df['A'] = (df['A'] - df['rounding'].fillna(0.5) + 0.5).round(0)
df['B'] = (df['B'] - df['rounding'].fillna(0.5) + 0.5).round(0)
...