我有一个名为dc的数据框,其“ SEX”列为92201行。
当我尝试对所有1进行子集化时,key
新数据帧会产生name
行。
当我尝试对所有0的子集:key="layer.name"
进行子集化时,新的数据帧会产生dc1num=dc[dc['SEX']==1]
行。
当我尝试将所有1子集作为一个字符串子集时,新数据框len(dc1num)= 47614
会产生dc0num=dc[dc['SEX']==0]
行。
当我尝试将所有0子集作为字符串的子集时,len(dc0num)= 40492
新数据帧会产生dc1str=dc[dc['SEX']=='1'],
行。
它们全部精确地相加多达len(dc1str)= 2130
行,与原始数据集中的行数相同。因此,显然其中一些编码为1,一些编码为“ 1”;一些零被编码为0,一些被编码为'0'。
我从此信息中收集到,此dataframe列中的某些行编码为整数,而另一些编码为字符串。
我想对所有1和0进行子集化,这样
dc0str=dc[dc['SEX']=='0'],
和
len(dc0str)= 1965
我尝试用47614+40492+2130+1965 = 92201
将它们全部变成字符串,然后尝试len(dc1)= 49,744
和len(dc0)= 47,614
,但这产生了与以前相同的结果。什么也没做我应该如何解决这个问题?
答案 0 :(得分:2)
使用:
dc['SEX']=dc['SEX'].astype(int)
# or dc['SEX']=dc['SEX'].astype(float)
然后:
dc1num=dc[dc['SEX']==1]
dc0num=dc[dc['SEX']==0]
您也可以这样做:
for i,group in df.groupby('SEX'):
print(group)
答案 1 :(得分:0)
通常我们可以进行一次转换
df.SEX=pd.to_numeric(df.SEX)
然后我们可以分割df
df1=df.query('SEX==1')
df2=df.query('SEX==0')
答案 2 :(得分:0)
要将数据强制转换为字符串格式,请尝试使用下面的函数;您拨打电话的方式不适用。
df['A'] = df['A'].astype(str)
答案 3 :(得分:0)
一种适用于非整数数字的方法:
df['SEX'] = pd.to_numeric(df['SEX'], errors='coerce')
答案 4 :(得分:0)
解决方案1:将列中的所有值转换为整数
df ['col1'] = df ['col1']。astype(int)
(OR)
将熊猫作为pd导入 df ['col1'] = pd.to_numeric(df ['co11'])
解决方案2:将列中的所有值转换为字符串 示例:df ['col1'] = df.col1.apply(str)
以上解决方案之一应该有效