Это никогда не изменит фактический фрейм данных с именем a
.
TL; DR: строки, которые вы получаете от iterrows, являются копиями, которые больше не связаны с исходным фреймом данных , поэтому правки не изменяют ваш фрейм данных. Однако вы можете использовать индекс для доступа и редактирования соответствующей строки фрейма данных.
ОБЪЯСНЕНИЕ
Почему?
Строки вы возвращаетесь из iterrows
- это копии , которые не длиннее , связанных с исходным фреймом данных , поэтому изменения не меняются ваш фреймворк. Однако вы можете использовать index
для доступа и редактирования соответствующей строки фрейма данных.
Решение таково:
import pandas as pd
a = pd.read_excel("Book1.xlsx")
a['Serial Number'] = a['Serial Number'].apply(str)
a.head()
# ID Serial Number
# 0 1 SR0101306
# 1 2 1101306
print(a.iloc[0,1])
#101306
for index,row in a.iterrows():
row = row.copy()
if len(row['Serial Number']) == 6:
# use the index and .loc method to alter the dataframe
a.loc[index, 'Serial Number'] = 'SR0' + row['Serial Number']
print(a.iloc[0,1])
#SR0101306