【发布时间】:2018-02-23 06:33:28
【问题描述】:
我有一个数据框:
Isolate1 Isolate2 Isolate3 Isolate4
2 NaN NaN AGTCTA AGT
5 NaN GC NaN NaN
并且想用破折号替换 Isolate1 列中的 NaN 值,其他列的非 NaN 值中的每个字母一个破折号(或者如果其他列具有其他不同的值,则为最大数量),以类似这些结尾:
Isolate1 Isolate2 Isolate3 Isolate4
2 ------ NaN AGTCTA AGT
5 -- GC NaN NaN
我尝试了以下方法:
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)
但是没用,有什么建议吗?
【问题讨论】: