【发布时间】:2019-01-21 03:45:39
【问题描述】:
我有两个dataframe要合并。当我用相同的输入数据和代码运行程序时,会出现两种情况(第一:合并成功;第二:合并数据中属于'annotate'的数据为NaN。)
raw_df2 = pd.merge(annotate,raw_df,on='gene',how='right').fillna("unkown")
那我有一个测试:
count = 10001
while (count > 10000):
raw_df2 = pd.merge(annotate,raw_df,on='gene',how='right').fillna("unkown")
count = len(raw_df2[raw_df2["type"]=="unkown"])
print(count)
如果合并失败,“raw_df”在运行过程中总是失败。我必须重新提交脚本,结果可能会成功。
[前两列来自'annotate';其他列来自'raw_df']
失败的结果:
| type | gene | locus | sample_1 | sample_2 | status | value_1 | value_2 |
+--------+---------------+--------------------------+----------+----------+--------+---------+----------+
| unknow | 0610040J01Rik | chr5:63812494-63899619 | Ctrl | SPION10 | OK | 2.02125 | 0.652688 |
| unknow | 1110008F13Rik | chr2:156863121-156887078 | Ctrl | SPION10 | OK | 87.7115 | 49.8795 |
+--------+---------------+--------------------------+----------+----------+--------+---------+----------+
成功的结果:
+--------+----------+------------------------+----------+----------+--------+----------+---------+
| gene | type | locus | sample_1 | sample_2 | status | value_1 | value_2 |
+--------+----------+------------------------+----------+----------+--------+----------+---------+
| St18 | misc_RNA | chr1:6487230-6860940 | Ctrl | SPION10 | OK | 1.90988 | 3.91643 |
| Arid5a | misc_RNA | chr1:36307732-36324029 | Ctrl | SPION10 | OK | 1.33796 | 2.21057 |
| Carf | misc_RNA | chr1:60076867-60153953 | Ctrl | SPION10 | OK | 0.846988 | 1.47619 |
+--------+----------+------------------------+----------+----------+--------+----------+---------+
【问题讨论】:
-
数据框是否太大?可能是内存问题..
-
文件大小不超过10M。我在Mac(RAM 16G)上运行脚本,然后在RAM为64G的服务器上运行,结果是一样的。 @QusaiAlothman
-
能不能找个小复制箱试试?如果只使用帧的前一千行,问题是否仍然存在?前十名?您可以删除一些列并仍然看到问题吗?等等。
标签: python-3.x pandas dataframe statistics