目前,我正在使用熊猫编写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的新手。请帮助。谢谢。
答案 0 :(得分:0)
您可以创建自定义函数并从最后到第一个更改条件的顺序,因为在原始解决方案中总是匹配第一个条件:
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