我有一个分类数据框架,我想将其转换为数值数据。我有超过50列,所以我想在循环中运行.replace
命令。
replace_map = {'w': 4, '+': 5, '.': 6, 'g': 7}
我已经编写了遍历列的代码
for column in df1_replace.columns[1:76]:# 使用[]操作符通过列名选择列内容columnSeriesObj = df1_replace[column]print('列名 : ', column)print('列内容 : ', columnSeriesObj.values)
回答:
你可以使用dropna()
和drop_duplicated()
来实现。我使用了自己的样本数据,其中有一列没有值。
df
看起来像这样
0 1 2 3 40 2001 1 NaN a a1 2001 2 NaN b b2 2001 3 NaN c c3 2005 1 NaN a a4 2005 1 NaN c c
然后删除所有值为na(NaN)
的列(how='all'
)
df_new = df.dropna(how='all', axis=1)
对数据框进行转置,重复的列将变成重复的行。然后对其使用drop_duplicates
来删除重复的行。将其转置回来以获得你的原始数据,去掉空列和重复列。
df_new = df_new.T.drop_duplicates().Tdf_new.columns = range(len(df_new.columns))print(df_new)