Отказ от ответственности
Я лично посоветовал бы исправить эти данные в источнике, чтобы после прочтения их в DataFrame вам не приходилось иметь дело с этим типомочистки данных.Если это не вариант, вы можете использовать этот подход.
Сначала замените NaN
на заголовок Country
:
df.columns = df.iloc[0].fillna('Country').astype(str).values
Country 1850.0 1851.0 1852.0 1853.0 1854.0 1855.0
0 NaN 1850.000000 1851.000000 1852.000000 1853.000000 1854.000000 1855.000000
1 California 0.235450 0.282475 0.311489 0.331177 0.345413 0.356185
2 New York 0.211768 0.217419 0.222798 0.227924 0.232815 0.237486
3 New Jersey 0.122454 0.130429 0.137851 0.144774 0.151249 0.157317
Теперь используйте регулярное выражение для переименования столбцов и нарежьте свой DataFrame:
df.rename(columns=lambda x: re.sub(r'\.\d+', '', x)).iloc[1:]
Country 1850 1851 1852 1853 1854 1855
1 California 0.235450 0.282475 0.311489 0.331177 0.345413 0.356185
2 New York 0.211768 0.217419 0.222798 0.227924 0.232815 0.237486
3 New Jersey 0.122454 0.130429 0.137851 0.144774 0.151249 0.157317