【问题标题】:Splitting non-unique values to unique values in pandas将非唯一值拆分为熊猫中的唯一值
【发布时间】:2019-03-04 01:18:49
【问题描述】:

我的数据(CSV 文件)有重复值。但是顺序值彼此重要,而不是彼此重要。我需要按 col a 中的相似值对行进行分组,但对于仅彼此靠近的值。
IE for (2,1) =[[0.5, 1.5], [1.2, 2.3], (2,2) = [[1.3, 0.5], [2.5, 1.5]] 等等。

     col a          posX           pos y
  0  1               0.5             1.5
  1  1               1.2             2.3
  2  2               1.3             0.5
  3  2               2.5             1.5
  4  3               0.7             0.7
  5  3               1.6             4.0
  6  3               2.1             5.1
  7  1               1.2             2.4
  8  1               1.5             2.5
  9  1               1.6             2.6
  10 2               2.0             1.5

因此 (2,1) != (3,1) 它们可能包含不同的长度或不同的值

我的数据很大,25000 行 因此我不能确定 (2,1) 不会出现多次,所以我不能使用长度作为唯一值键

我正在努力合并这些数据而不合并所有这些值,因为当您使用

df.groupby['col a']

它将所有的 1 放在一起。

谢谢

编辑以澄清预期结果并提供更多信息

【问题讨论】:

  • 预期输出是什么?
  • 预期的结果是合并相互靠近但不与其他行合并的col A行

标签: python-3.x pandas pandas-groupby


【解决方案1】:

相信需要帮手Series:

g = df['col a'].ne(df['col a'].shift()).cumsum()
df.groupby(g)

【讨论】:

  • 对不起,这没有帮助。如果有帮助,我已经更新了问题
【解决方案2】:

所以我设法解决了这个问题。我在大学里更习惯 Java,所以花了一些时间来解决问题

创建一个空的np.Array 很困难。需要知道您尝试初始化的数组的确切大小。我这样做是因为我认为最好的方法是逐行预填充这个空数组,即[[x1,y1], [x2,y2]...]

我将我需要使用series = df.groupby(['t', 'col a']) t 的值分组为知道col a 何时重置的值

给我一​​系列长度编号col a,用唯一键(t1, 1), (t2, 1) 重置,每行包含一个pd.Dataframe

将分组的系列打包成一个列表并循环该列表

unpacked = [x for x in series]
vec_list = list()             # empty list to store the array
for v in unpacked:
    df = v[1]                 # v[0] is the key and v[1] is the dataframe of the grouped value
    x = df.values             # turns the entire df into np.array! 
    vec_list.append(x)

vec_list 将包含分组的 np.Array 列表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 2022-07-15
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    相关资源
    最近更新 更多