【问题标题】:how to convert categorical data to numerical data in for loop in python pandas如何在python pandas的for循环中将分类数据转换为数值数据
【发布时间】:2019-11-08 06:06:23
【问题描述】:

我有一个分类数据框架,我想将其转换为数值数据,我有超过 50 列,所以我想循环运行 .repalce 命令。

replace_map =  {'w': 4, '+': 5, '.': 6, 'g': 7}

我已经编写了遍历列的代码

for column in df1_replace.columns[1:76]:
# Select column contents by column name using [] operator
columnSeriesObj = df1_replace[column]
print('Colunm Name : ', column)
print('Column Contents : ', columnSeriesObj.values)

【问题讨论】:

  • 请添加更多细节并尝试添加一些参考
  • 是的。如果您可以提供示例数据、您尝试过的内容和预期的输出,则可以提供完整的答案。
  • @nitin3685 我如何在此处分享 Excel 表格?
  • 请不要。请仅将部分示例数据复制到您的问题中。不需要 119 列。只是一些带有您想要删除的列的示例。顺便说一句,您还发布了到目前为止您尝试过的内容。
  • 请不要上传图片。请发文。我不能在示例程序中使用图像。 :-) .. 您要删除哪些列?它们是像 T 和 AD 这样的列吗?

标签: python pandas machine-learning


【解决方案1】:

以下是使用 dropna()drop_duplicated() 的方法 我使用了自己的示例数据,其中一列没有值。

import pandas as pd
from io import StringIO

csv = StringIO('''2001,1,,a,a
        2001,2,,b,b
        2001,3,,c,c
        2005,1,,a,a
        2005,1,,c,c''')
df = pd.read_csv(csv, header=None )
print(df)

df 看起来像这样

      0  1   2  3  4
0  2001  1 NaN  a  a
1  2001  2 NaN  b  b
2  2001  3 NaN  c  c
3  2005  1 NaN  a  a
4  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().T
df_new.columns = range(len(df_new.columns))
print(df_new)

【讨论】:

  • 先生,我的数据集中没有空值,有重复的列,我想删除重复的列。
  • 请立即查看。我添加了如何删除空列和重复列。我还展示了如何删除空列,因为您的数据样本有完全空的列。
  • 谢谢,我如何在删除重复列后重新索引我的新数据框,例如在删除重复列后索引是 0、1、15、34、35,我想要在 0、1、2、3 中,4,5
  • 现在检查。顺便说一句,请编辑您的问题以添加文本格式的示例数据和新要求:-)。它将帮助其他想要做类似事情的人。另外,如果您可以接受答案,请不要忘记投票并接受答案
  • 你能给我你的电子邮件地址,以便我可以和你讨论我真正的问题我是数据科学的新手。
猜你喜欢
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多