Python 如何转换也包含整数中的NaN的一行年份?

Python 如何转换也包含整数中的NaN的一行年份?,python,pandas,dataframe,Python,Pandas,Dataframe,这是我的数据帧(移民)的头部: 我想做的是: 1) 去掉开头的“南”,换成“国家” 2) 我想去掉标题中数字的小数点,因为那是年份 我试过: immigration.columns = pd.to_numeric(immigration.iloc[0], downcast='integer', errors='coerce') 此外: 这些都不起作用。免责声明 我个人建议在源代码处修复这些数据,这样一旦将其读入数据帧,就不必处理这种类型的数据清理。如果这不是一个选项,您可以使用这种方法 首先

这是我的数据帧(移民)的头部:

我想做的是: 1) 去掉开头的“南”,换成“国家” 2) 我想去掉标题中数字的小数点,因为那是年份

我试过:

immigration.columns = pd.to_numeric(immigration.iloc[0], downcast='integer', errors='coerce')
此外:

这些都不起作用。

免责声明 我个人建议在源代码处修复这些数据,这样一旦将其读入数据帧,就不必处理这种类型的数据清理。如果这不是一个选项,您可以使用这种方法


首先,用您的
Country
标题替换
NaN

df.columns = df.iloc[0].fillna('Country').astype(str).values

现在使用正则表达式重命名列,并切片数据帧:

df.rename(columns=lambda x: re.sub(r'\.\d+', '', x)).iloc[1:]


您是否可以将数据框作为文本而不是图像发布?另外,我建议您在读取数据时解决此问题,而不是事后尝试解决。这看起来像是一个需要清理的输入案例,只是将数据框作为文本共享
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
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