我有一个数据帧:
Isolate1 Isolate2 Isolate3 Isolate4
2 NaN NaN AGTCTA AGT
5 NaN GC NaN NaN
并希望用破折号替换Isolate1列中的NaN值,对于其他列中的非NaN值中的每个字母(如果其他列有其他不同的值,则为最大值),以如下形式结束:
^{pr2}$我试过以下方法:
index_sizes_to_replace = {}
for row in df.itertuples():
indel_sizes = []
#0 pos is index
for i, value in enumerate(row[1:]):
if pd.notnull(value):
indel_sizes.append((i, len(value)))
max_size = max([size for i, size in indel_sizes])
index_sizes_to_replace[row[0]]= max_size
现在我有了替换NaN值的破折号,但不知道如何填充,尝试了以下方法:
for index, size in index_sizes_to_replace.iteritems():
df.iloc[index].fillna("-"*size, inplace=True)
但没用,有什么建议吗?在
它看起来有点难看,但它确实起了作用:
退货
^{pr2}$让我们试试:
原液:
^{pr2}$要忽略Isolate1:
输出:
@Anton vBR Edit来处理col1中的not nan。在
输出:
设置
解决方案
^{pr2}$使用
fillna
+apply
+str.__mul__
:相关问题 更多 >
编程相关推荐