Pandas 熊猫-在两个索引之间切片
我需要用tensorflow处理数据进行分类。因此,我需要为机器中处理的每个单元创建数据帧。机器持续写入过程数据,并在装置进出机器时写入数据 “uid\u in”中的值表示机器输入了记录的编号,“uid\u out”表示机器离开了机器Pandas 熊猫-在两个索引之间切片,pandas,slice,Pandas,Slice,我需要用tensorflow处理数据进行分类。因此,我需要为机器中处理的每个单元创建数据帧。机器持续写入过程数据,并在装置进出机器时写入数据 “uid\u in”中的值表示机器输入了记录的编号,“uid\u out”表示机器离开了机器 [...] time uhz1 uhz2 lhz1 lh2 uid_in uid_out 5 08:05:00 201 200 101 100 1.0 NaN #Unit1 enters the ma
[...]
time uhz1 uhz2 lhz1 lh2 uid_in uid_out
5 08:05:00 201 200 101 100 1.0 NaN #Unit1 enters the machine
6 08:06:00 201 200 99 101 2.0 NaN
[...]
14 08:14:00 199 199 99 101 10.0 NaN
15 08:15:00 201 201 100 100 11.0 1.0 #Unit1 leaves the machine
[...]
我需要为机器的每个单元进程创建这样的数据帧
[...]
time uhz1 uhz2 lhz1 lh2 uid_in uid_out
5 08:05:00 201 200 101 100 1.0 NaN #Unit1 enters the machine
6 08:06:00 201 200 99 101 2.0 NaN
[...]
14 08:14:00 199 199 99 101 10.0 NaN
15 08:15:00 201 201 100 100 11.0 1.0 #Unit1 leaves the machine
[...]
如何为每个单元自动创建数据帧df.loc[输入:离开]
当我试图传递DataFrame.index时,它在df.loc中不起作用
start = df[df.uid_in.isin([123])]
end = df[df.uid_out.isin([123])]
unit1_df = df.loc[start:end]
我觉得你很接近。我修改了您的陈述,并选择了
start
和end
的开始和结束索引,如Ian所示
""" time uhz1 uhz2 lhz1 lh2 uid_in uid_out
5 08:05:00 201 200 101 100 1.0 NaN
6 08:06:00 201 200 99 101 2.0 NaN
14 08:14:00 199 199 99 101 10.0 NaN
15 08:15:00 201 201 100 100 11.0 1.0
"""
import pandas as pd
df = pd.read_clipboard()
start = df.uid_in.eq(1.0).index[0]
end = df.uid_out.eq(1.0).index[0]
unit1_df = df.loc[start:end]
unit1_df
输出:
time uhz1 uhz2 lhz1 lh2 uid_in uid_out
5 08:05:00 201 200 101 100 1.0 NaN
6 08:06:00 201 200 99 101 2.0 NaN
14 08:14:00 199 199 99 101 10.0 NaN
15 08:15:00 201 201 100 100 11.0 1.0
一艘班轮:
unit1_df = df.loc[df.uid_in.eq(1.0).index[0]:df.uid_out.eq(1.0).index[0]]
我觉得你很接近。我修改了您的陈述,并选择了
start
和end
的开始和结束索引,如Ian所示
""" time uhz1 uhz2 lhz1 lh2 uid_in uid_out
5 08:05:00 201 200 101 100 1.0 NaN
6 08:06:00 201 200 99 101 2.0 NaN
14 08:14:00 199 199 99 101 10.0 NaN
15 08:15:00 201 201 100 100 11.0 1.0
"""
import pandas as pd
df = pd.read_clipboard()
start = df.uid_in.eq(1.0).index[0]
end = df.uid_out.eq(1.0).index[0]
unit1_df = df.loc[start:end]
unit1_df
输出:
time uhz1 uhz2 lhz1 lh2 uid_in uid_out
5 08:05:00 201 200 101 100 1.0 NaN
6 08:06:00 201 200 99 101 2.0 NaN
14 08:14:00 199 199 99 101 10.0 NaN
15 08:15:00 201 201 100 100 11.0 1.0
一艘班轮:
unit1_df = df.loc[df.uid_in.eq(1.0).index[0]:df.uid_out.eq(1.0).index[0]]
你的代码几乎成功了 原始数据帧:
time uhz1 uhz2 lhz1 lh2 uid_in uid_out
0 08:00:00 201 199 100 100 NaN NaN
1 08:01:00 199 199 100 99 NaN NaN
[...]
5 08:05:00 201 200 101 100 1.0 NaN
[...]
55 08:55:00 241 241 140 140 NaN 41.0
[...]
58 08:58:00 244 244 143 143 NaN NaN
59 08:59:00 245 245 144 144 NaN NaN
新代码:
start = df[df.uid_in.eq(1.0)].index[0]
end = df[df.uid_out.eq(1.0)].index[0]
unit1_df = df.loc[start:end]
print(unit1_df)
输出
time uhz1 uhz2 lhz1 lh2 uid_in uid_out
5 08:05:00 201 200 101 100 1.0 NaN
6 08:06:00 201 200 99 101 2.0 NaN
[...]
14 08:14:00 199 199 99 101 10.0 NaN
15 08:15:00 201 201 100 100 11.0 1.0
你的代码几乎成功了 原始数据帧:
time uhz1 uhz2 lhz1 lh2 uid_in uid_out
0 08:00:00 201 199 100 100 NaN NaN
1 08:01:00 199 199 100 99 NaN NaN
[...]
5 08:05:00 201 200 101 100 1.0 NaN
[...]
55 08:55:00 241 241 140 140 NaN 41.0
[...]
58 08:58:00 244 244 143 143 NaN NaN
59 08:59:00 245 245 144 144 NaN NaN
新代码:
start = df[df.uid_in.eq(1.0)].index[0]
end = df[df.uid_out.eq(1.0)].index[0]
unit1_df = df.loc[start:end]
print(unit1_df)
输出
time uhz1 uhz2 lhz1 lh2 uid_in uid_out
5 08:05:00 201 200 101 100 1.0 NaN
6 08:06:00 201 200 99 101 2.0 NaN
[...]
14 08:14:00 199 199 99 101 10.0 NaN
15 08:15:00 201 201 100 100 11.0 1.0
start
和end
是pd.DataFrame
s,因此它们不会在df.loc
中工作。您必须将.index
放在它们的末尾,如下所示:start.index
。您也可以只说start=df.uid\u in.isin([123])
和end=df.uid\u out.isin([123])
。现在我的问题是:start
和end
的索引是一行吗?还是多重?如果有多个数据帧,则该片将无法工作start
和end
是pd.DataFrame
s,因此它们将无法在df.loc
中工作。您必须将.index
放在它们的末尾,如下所示:start.index
。您也可以只说start=df.uid\u in.isin([123])
和end=df.uid\u out.isin([123])
。现在我的问题是:start
和end
的索引是一行吗?还是多重?如果是多个,那么这个片段将不起作用。这将返回我机器上的整个数据帧。把代码改了一点,然后把我的解决方案贴出来。明白了。。。希望至少能有所帮助!我改变了我的soln以匹配你的soln。这将返回我机器上的整个数据帧。把代码改了一点,然后把我的解决方案贴出来。明白了。。。希望至少能有所帮助!我改变了我的soln以匹配你的soln。干杯