我有一个数据帧列表(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
您可以使用以下代码来实现以下目标:
(假设您所指的
'all string values'
表示非NaN值)这里,我们用^{} (} 将布尔值转换为等效的整数值。因此,实现你的目标
Not null
)检查column
的列值。非NaN时返回True
(与1
等价的整数),而NaN
时返回False
(与0
等价的整数)。然后,我们使用^{将以下内容放回代码中:
相关问题 更多 >
编程相关推荐