pandas groupby正在返回两个具有相同唯一id的组

2024-05-15 08:05:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大熊猫数据框,在这里我运行的操作组。你知道吗

CHROM    POS    Data01    Data02 ......
1        ....................
1        ...................
2        ..................
2        ............
scaf_9   .............
scaf_9   ............

所以,我在做:

 my_data_grouped = my_data.groupby('CHROM')

 for chr_, data in my_data_grouped:
      do something in chr_
      write something from that chr_ data

在小数据和没有字符串类型CHROMscaff_9的数据中,一切都很好。但是,有了非常大的数据和scaff_9,我得到了两组2。它实际上不是一条错误消息,也不会影响计算。问题是当我在文件中按组写入数据时;我得到了两组2(不相等地分割)。你知道吗

对我来说,追溯这个问题的根源变得非常困难,因为没有错误消息,而且对于小数据,它工作得很好。我唯一的假设是:

  • pandas模块可以处理的总数据帧和分组数据帧中的行数是否有一定的限制。这个问题的解决办法是什么?你知道吗
  • 在所有的2对象中,大多数被视为整数对象,有些(后面的部分)被视为接近scaff_9的字符串对象。这可能吗?你知道吗

对不起,我只是在这里做假设,我不可能知道问题的根源。你知道吗

后期编辑: 在对groupby执行操作之前,我也尝试过运行sort_by(['CHROM']),但问题仍然存在。你知道吗

任何可能的解决办法。你知道吗

谢谢你


Tags: 数据对象字符串in消息datamy错误
1条回答
网友
1楼 · 发布于 2024-05-15 08:05:21

在我看来,有数据问题,显然有些空白,所以熊猫分别处理每个组。你知道吗

解决方法应该是首先删除traling空格:

df.index = df.index.astype(str).str.strip()

您还可以检查index的唯一字符串值:

a = df.index[df.index.map(type) == str].unique().tolist()

如果第一列不是索引:

df['CHROM'] = df['CHROM'].astype(str).str.strip()

a = df.loc[df['CHROM'].map(type) == str, 'CHROM'].unique().tolist()

编辑:

最后一个解决方案更简单-转换为str,如:

df['CHROM'] = df['CHROM'].astype(str)

相关问题 更多 >