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