python - 根据其他列值/ Pandas -Python 在数据框中创建 ID 列
问题描述
我有一个这样的数据框
L_1 D_1 L_2 D_2 L_3 D_3 C_N
1 Boy Boy||
1 Boy 1-1 play Boy|play|
1 Boy 1-1 play 1-1-21 car Boy|play|car
1 Boy 1-1 play 1-1-1 online Boy|play|online
2 Girl Girl||
2 Girl 2-1 dance Girl|dance|
我已经C_N
使用代码创建了选项卡
df['C_N'] = df[['D_1','D_2', 'D_3']].apply(lambda x: '|'.join(x), axis=1)
现在我想要另一列,我也可以在其中获取特定组的 ID,我理想的输出是:
L_1 D_1 L_2 D_2 L_3 D_3 IDs C_N
1 Boy 1 Boy||
1 Boy 1-1 play 1-1 Boy|play|
1 Boy 1-1 play 1-1-21 car 1-1-21 Boy|play|car
1 Boy 1-1 play 1-1-1 online 1-1-1 Boy|play|online
2 Girl 2 Girl||
2 Girl 2-1 dance 2-1 Girl|dance|
任何人都可以在这个问题上帮助我。先感谢您!
解决方案
我已经定义了一个自定义函数来检索所需的数据:
df = pd.DataFrame([
['1', 'Boy','','','',''],
['1', 'Boy','1-1','play','',''],
['1', 'Boy','1-1','play','1-1-21','car'],
['1', 'Boy','1-1','play','1-1-1','online'],
['2', 'Girl','','','',''],
['2', 'Girl','','dance','','']], columns=['L_1','D_1','L_2','D_2','L_3','D_3']
)
df['C_N'] = df[['D_1','D_2', 'D_3']].apply(lambda x: '|'.join(x), axis=1)
def get_data(x,y,z):
result = []
if x != '':
result.append(x)
if y != '':
result.append(y)
if z != '':
result.append(z)
return result[-1]
df['IDs'] = ''
df['IDs'] = df.apply(lambda row: get_data(row['L_1'], row['L_2'], row['L_3']), axis=1)
输出df
推荐阅读
- javascript - 如何使用 JavaScript 显示图像和文本搜索结果?
- java - Spring boot Jsp / Tag在不同模块中
- jquery - Jssor 是否可以在滑块上放置一个暂停按钮并播放?
- spring - Spring Boot 执行器端点未通过 HTTP 公开
- python - 将 Pandas DataFrame 列值与另一个 DataFrame 列匹配
- glsl - Vulkan 是否支持着色器中的原子浮点操作?
- javascript - 无法读取未定义的属性“电子表格” - 谷歌电子表格
- python - 连接具有多个值组件的两个 RDD 并将结果展平
- javascript - MomentJS 获取相对于今天的先前日期
- node.js - 无法在浏览器中连接到我的节点服务器,但 curl 有效