輸入:
0 1 2
TNN R11W MSLQEMFRFPRGLLLGSVLLVASAPATL
ASTN1 E5V MALAALCALLACCWGPAAVLATAAGDVDPSK
HSPB7 H19P MSHRTSSTFRAERSFHSSHSSSSSSTSSSASRALPAQDPPMEK
CLCNKB C3Y MECFVGLREGSSGNPVTLQELWGPCPRIRRGIRG
SZRD1 P10L MEDEEVAESWEEAADSGEIDRRLEKKL
預期輸出:
0 1 2
TNN R11W MSLQEMFRFPWGLLLGSVLLVASAPATL
ASTN1 E5V NaN
HSPB7 H19P MSHRTSSTFRAERSFHSSPSSSSSSTSSSASRALPAQDPPMEK
CLCNKB C3Y MEYFVGLREGSSGNPVTLQELWGPCPRIRRGIRG
SZRD1 P10L NaN
代碼:示例
with open('temp.txt', 'w') as fw:
for x in range(len(merge_two_files[1])):
for i in range(len(merge_two_files[2])):
if merge_two_files[1][x] == something:
data = anything
fw.write(str(data))
我想用“第 1 列”的索引更改“第 2 列”中的一個字符。例如,在第一行中,如果我檢查“第 1 列”的索引,我會在“第 2 列”的第 11 個字符中設定“R”。如果字符是'R',我想把它改成'W'。如果沒有,我想在單元格中寫上“NaN”。我很抱歉,但對 Pandas 有什么建議嗎?
uj5u.com熱心網友回復:
撰寫自定義函式:
def replace_char(row):
# explode 'R11W' into c='R', p=11, r='W'
c, p, r = (row['1'][0], int(row['1'][1:-1]), row['1'][-1])
s1 = row['2']
s2 = np.NaN
if s1[p-1] == c:
s2 = f"{s1[:p-1]}{r}{s1[p:]}"
return s2
df['2'] = df.apply(replace_char, axis=1)
輸出:
>>> df
0 1 2
0 TNN R11W MSLQEMFRFPWGLLLGSVLLVASAPATL
1 ASTN1 E5V NaN
2 HSPB7 H19P MSHRTSSTFRAERSFHSSPSSSSSSTSSSASRALPAQDPPMEK
3 CLCNKB C3Y MEYFVGLREGSSGNPVTLQELWGPCPRIRRGIRG
4 SZRD1 P10L NaN
uj5u.com熱心網友回復:
這是我的回答:
data = [["TNN", "R11W", "MSLQEMFRFPRGLLLGSVLLVASAPATL"], ["ASTN1", "E5V", "MALAALCALLACCWGPAAVLATAAGDVDPSK"],
["HSPB7", "H19P", "MSHRTSSTFRAERSFHSSHSSSSSSTSSSASRALPAQDPPMEK"],
["CLCNKB", "C3Y", "MECFVGLREGSSGNPVTLQELWGPCPRIRRGIRG"],
["SZRD1", "P10L", "MEDEEVAESWEEAADSGEIDRRLEKKL"]]
result = []
for row in data:
res_row = []
res_row.append(row[0])
res_row.append(row[1])
c1 = row[1][0]
c2 = row[1][-1]
num = int(row[1][1:-1])
if row[2][num-1] == c1:
c3 = (row[2])
l = list(c3)
l[num-1] = c2
c3=''.join(l)
res_row.append(c3)
else:
res_row.append("NaN")
result.append(res_row)
print(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357483.html
