鱼C论坛

 找回密码
 立即注册
查看: 2917|回复: 2

[已解决]求大神看下,如何才能由数字得到列名

[复制链接]
发表于 2022-12-12 14:50:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 futui 于 2022-12-12 14:52 编辑

data = [[23.3,1,4,8],
[40.18,0,38.41,37.0],
[48.52,1,49.82,2],
[63.9,None,65.4,3],
[34.51,2,36, 1],
[None,3,47.2,46.14]]
df = pd.DataFrame(data = data,columns=['A','B','C','D'])

#新增字母列
df["zm"] = ""

想通过B列的值(数字)得到列名(0 代表 A ,1 代表 B ,2 代表 C ,3 代表 D )

df.loc[~pd.isna(df['B']),'zm'] = df.loc[~pd.isna(df['B']),'B']      #只能求出字母列的数字,想用下句直接求报错

#df.loc[~pd.isna(df['B']),'zm'] = df.columns(df.loc[~pd.isna(df['B']),'B'])   #想通过这句得到列名,但 会报错,要怎么处理?
求大神帮忙!谢谢

我还发不了相片,我的字母列应该长这样:
B
A
B

C
D
最佳答案
2022-12-12 18:11:22
本帖最后由 阿奇_o 于 2022-12-12 18:13 编辑
# 空值(缺失值/异常值)一般都是先处理的,否则后面其他各种计算都可能受干扰或无法进行
df['zm'] = df.B.fillna('nan').replace(dict(zip([0.0, 1.0, 2.0, 3.0, 'nan'], 'ABCD '))) 

df.zm
0    B
1    A
2    B
3     
4    C
5    D
Name: B, dtype: object
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-12 17:13:14 | 显示全部楼层
本帖最后由 cflying 于 2022-12-12 17:26 编辑

我理解已知数据组中某列有0,1,2,3,4等数据,现在是想在旁边根据对照关系匹配出一列新数据ABCD吗?
如果是,则df1是原始数据,df2是匹配关系,然后两个merge就可以出一个新数据列
如果是想根据匹配关系自动填充NA,则可以先把匹配关系map后,然后利用fillna进去就行

确实没咋理解来意思,我感觉是第一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-12-12 18:11:22 | 显示全部楼层    本楼为最佳答案   
本帖最后由 阿奇_o 于 2022-12-12 18:13 编辑
# 空值(缺失值/异常值)一般都是先处理的,否则后面其他各种计算都可能受干扰或无法进行
df['zm'] = df.B.fillna('nan').replace(dict(zip([0.0, 1.0, 2.0, 3.0, 'nan'], 'ABCD '))) 

df.zm
0    B
1    A
2    B
3     
4    C
5    D
Name: B, dtype: object
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 09:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表