han*_*ang 12 python replace dataframe pandas
我搜索过去30分钟的答案,但唯一的解决方案是单列还是R.我有一个数据集,我想在其中将('Y/N')值更改为1和0分别.我觉得复制和粘贴17次以下的代码是非常低效的.
df.loc[df.infants == 'n', 'infants'] = 0
df.loc[df.infants == 'y', 'infants'] = 1
df.loc[df.infants == '?', 'infants'] = 1
Run Code Online (Sandbox Code Playgroud)
我的解决方案如下.这不会导致错误,但数据框中的值不会更改.我假设我需要做像df = df_new这样的事情.但是怎么做呢?
for coln in df:
for value in coln:
if value == 'y':
value = '1'
elif value == 'n':
value = '0'
else:
value = '1'
Run Code Online (Sandbox Code Playgroud)
编辑:此数据集中有17列,但还有另一个我希望解决的数据集,其中包含56列.
republican n y n.1 y.1 y.2 y.3 n.2 n.3 n.4 y.4 ? y.5 y.6 y.7 n.5 y.8
0 republican n y n y y y n n n n n y y y n ?
1 democrat ? y y ? y y n n n n y n y y n n
2 democrat n y y n ? y n n n n y n y n n y
3 democrat y y y n y y n n n n y ? y y y y
4 democrat n y y n y y n n n n n n y y y y
Run Code Online (Sandbox Code Playgroud)
jez*_*ael 11
我认为最简单的用途replace
是dict
:
np.random.seed(100)
df = pd.DataFrame(np.random.choice(['n','y','?'], size=(5,5)),
columns=list('ABCDE'))
print (df)
A B C D E
0 n n n ? ?
1 n ? y ? ?
2 ? ? y n n
3 n n ? n y
4 y ? ? n n
d = {'n':0,'y':1,'?':1}
df = df.replace(d)
print (df)
A B C D E
0 0 0 0 1 1
1 0 1 1 1 1
2 1 1 1 0 0
3 0 0 1 0 1
4 1 1 1 0 0
Run Code Online (Sandbox Code Playgroud)
Lui*_*uel 10
这应该工作:
for col in df.columns():
df.loc[df[col] == 'n', col] = 0
df.loc[df[col] == 'y', col] = 1
df.loc[df[col] == '?', col] = 1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
47347 次 |
最近记录: |