Изменить данные в столбце, используя вычитание - PullRequest
0 голосов
/ 02 октября 2018

В настоящее время я пишу код на Python, используя панды для чтения и изменения данных в столбце «Время пользователя» путем вычитания.Файл CSV, который я читаю, содержит данные за целый месяц.В «Время пользователя» все данные времени были сохранены с интервалом в одну секунду.Значения повторяются через 1 неделю.Но я хочу, чтобы это повторилось через 1 день.Поэтому напишите этот код:

import pandas as pd
df = pd.read_csv('out.csv')
x = df['User Time']


if 86400 < x.any() and x.any() > 172800:
    x = x - 86400
elif 172800 < x.any() and x.any() > 259200:
    x = x - 172800
elif 259200 < x.any() and x.any() > 345600:
    x = x - 259200
elif 345600 < x.any() and x.any() > 432000:
    x = x - 345600
elif 432000 < x.any() and x.any() > 518400:
    x = x - 432000
else:
    x = x - 518400

df.to_csv('out.csv')

Нет ошибки, за исключением того, что все значения вычитаются на 518400. Предыдущее условие не работает.

Я новичок в Python.Помогите, пожалуйста.Спасибо.

1 Ответ

0 голосов
/ 02 октября 2018

Вы можете создать пользовательскую функцию и изменить порядок условий с последнего на первое, потому что в исходном решении всегда соответствует первое условие:

np.random.seed(156)
df = pd.DataFrame({'User Time':np.random.randint(86400, 519400, size=10)})
#print (df)

def func(x):

    if (432000 < x) and (x < 518400):
        return x - 432000
    elif (345600 < x) and (x < 432000):
        return x - 345600
    elif (259200 < x) and (x < 345600):
        return x - 259200
    elif (172800 < x) and (x < 259200):
        return x - 172800
    elif (86400 < x) and (x < 172800):
        return x - 86400
    else:
        return x - 518400

df['new1'] = df['User Time'].apply(func)
df['new2'] = df['User Time'] - 86400
print (df)
   User Time   new1    new2
0     176044   3244   89644
1     257100  84300  170700
2     259874    674  173474
3     289963  30763  203563
4     474506  42506  388106
5     494801  62801  408401
6     399588  53988  313188
7     503743  71743  417343
8     344194  84994  257794
9     399799  54199  313399
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...