我有一个包含两列的数据框:类别和日期时间
我想创建一个新列,显示当前行与前一行的日期时间之间的差异,在每个 category 重新开始。
我拥有的:
Category Datetime
A 2018-02-01 01:51:04
A 2018-02-01 02:04:04
B 2018-02-01 02:28:34
B 2018-02-01 02:41:34
B 2018-02-01 02:45:34
Run Code Online (Sandbox Code Playgroud)
我想要的是:
Category Datetime Difference
A 2018-02-01 01:51:04 NaT
A 2018-02-01 02:04:04 00:13:00
B 2018-02-01 02:28:34 NaT
B 2018-02-01 02:41:34 00:13:00
B 2018-02-01 02:45:34 00:04:00
Run Code Online (Sandbox Code Playgroud)
编辑:
@sacul 我尝试了你的解决方案,df['Difference'] = list(by_group.apply(lambda x: x['Datetime']-x['Datetime'].shift()))但它给了我奇怪的结果......这是我正在使用的实际数据:
Category Datetime Difference
A 2/1/18 1:51 NaT
A 2/1/18 2:04 1 days 02:52:00
B 2/1/18 2:28 NaT
C 2/1/18 2:41 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用csv文件,pd.read_csv但是我得到以下unicode错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcc in position 3: invalid continuation byte
Run Code Online (Sandbox Code Playgroud) 我有一个单个数字列表,我想要总结.
我从这开始:
d3 = [9,9,9,8]
d4 = [3,6,np.nan,10]
for i,j in enumerate(d3):
add = [(d3[i]-d4[i])**2]
Run Code Online (Sandbox Code Playgroud)
当我执行上面的代码时,我得到以下列表:
[36]
[9]
[nan]
[4]
Run Code Online (Sandbox Code Playgroud)
但是,我想要这些数字的SUM,而忽略NaN(所需的输出是36 + 9 + 4):