访问数据帧列表,并从二进制文件中只有两个unique值的列转换值

2024-09-29 23:19:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧列表(qlst),我想访问每个数据帧中只有2个唯一行值的每一列,并将所有nan值转换为0,将所有字符串值转换为1

我尝试创建一个函数二进制文件来执行此操作:

def binary(x):
  '''
  make all values binary by transforming all nan values in 0s and all str in 1s
  '''

  for df in x: #accessing dataframes in qlst
    for column in df:  # accessing columns in dataframe
      qarray = df[column].unique() #transforming unique values in array
      for i in qarray: 
        if len(qarray) == 2: # selecting all arrays with only 2 unique values
          df[column] = df[column].fillna(0) #filling nan values with zero
          if type(i) == str:
            i=1

            return x

binary(qlst)

只有零值在工作!这不会返回我想要的1值

输出示例:

qlst[20]
Q42AvaliouMarca03
0     0
1     Marca03
2     0
3     Marca03
4     0

Tags: 数据indfforcolumnnanallunique
1条回答
网友
1楼 · 发布于 2024-09-29 23:19:26

您可以使用以下代码来实现以下目标:

transform all nan values in zeros and all string values in 1s.

(假设您所指的'all string values'表示非NaN值)

df[column] = df[column].notna().astype(int)    # set NaN to 0's and non-NaN to 1's

这里,我们用^{}Not null)检查column的列值。非NaN时返回True(与1等价的整数),而NaN时返回False(与0等价的整数)。然后,我们使用^{}将布尔值转换为等效的整数值。因此,实现你的目标

将以下内容放回代码中:

def binary(x):
  '''
  make all values binary by transforming all nan values in 0s and all str in 1s
  '''

  for df in x: #accessing dataframes in qlst
    for column in df:  # accessing columns in dataframe
      qarray = df[column].unique() #transforming unique values in array
      for i in qarray: 
        if len(qarray) == 2: # selecting all arrays with only 2 unique values
          df[column] = df[column].notna().astype(int)    # set NaN to 0's and non-NaN to 1's

            return x

binary(qlst)

相关问题 更多 >

    热门问题