【发布时间】:2019-07-14 19:17:27
【问题描述】:
我正在寻找基于一列中的多个预定义数字序列(在本例中为 state)拆分 pandas DataFrame 的 Pythonic 实现。
示例:
sequence_1 = [4, 1, 5, 2]
sequence_2 = [3, 0]
test_data = pd.DataFrame({'state': [4, 1, 5, 2, 4, 1, 5, 2, 3, 0, 4, 1, 5, 2, 3, 0],
'output': [1, 1, 0, 1, 1, 3, 1, 1, 3, 2, 2, 2, 2, 0, 0, 0]})
期望的输出: 拆分成
0 4 1
1 1 1
2 5 0
3 2 1
4 4 1
5 1 3
6 5 1
7 2 1
8 3 3
9 0 2
等等。
只要它保留索引和其他值,我不担心输出格式。我看过pandas.DataFrame.groupby,但没有任何运气。我也试过isin,但它需要按顺序匹配特定的序列,并且所有值都存在。
任何帮助将不胜感激!
【问题讨论】:
-
是否有可能某些行不会在您正在寻找的任何拆分中?在您的示例中,它将是状态为 6 的行或状态为 4 的行,但后跟 0 而不是 1(例如顺序与您的序列列表中不同)。第二个问题:序列可以有共同的价值吗?
-
对于您的第一个问题:这是可能的,但仅限于 df 的开头或结尾(序列被提前切断 - 在这种情况下,理想的行为是忽略并丢弃它们)。 0-5之外不会有任何状态。
-
第二个问题:没有共同的价值观。
标签: python pandas dataframe sequence