我有一个数据框架:
sample_2
您可以先将str.split
作为列,然后将df.melt
作为列。
df[['letter','index']] = df['index'].str.split('/', expand=True)
res = (df.melt(id_vars=['letter','index'],var_name='sample')
.sort_values(by='index')
.rename(columns={ 'index' : 'number'})
.reset_index(drop=True)
)
print(res)
letter number sample value
0 A 1 sample_1 23
1 A 1 sample_2 33
2 A 2 sample_1 24
3 A 2 sample_2 34
4 A 3 sample_1 25
5 A 3 sample_2 35
using melt:
df = df.melt(value_vars=['sample_1','sample_2'], id_vars='index',var_name='sample')
df[['letter','number']] = df['index'].str.split('/',expand=True)
输出:
>>>
index sample value letter number
0 A/1 sample_1 23 A 1
1 A/2 sample_1 24 A 2
2 A/3 sample_1 25 A 3
3 A/1 sample_2 33 A 1
4 A/2 sample_2 34 A 2
5 A/3 sample_2 35 A 3
您可以尝试pd.wide_to_long
然后拆分和重命名列
df_ = pd.wide_to_long(df, ["sample_"], i="index", j="sample").reset_index()
df_[['index', 'number']] = df_['index'].str.split('/', expand=True)
df_ = df_.rename(columns={'index': 'letter', 'sample_': 'value'})
df_ = df_.assign(sample='sample_' + df_['sample'].astype(str), index=df_.index+1)
print(df_)
letter sample value number index
0 A sample_1 23 1 1
1 A sample_1 24 2 2
2 A sample_1 25 3 3
3 A sample_2 33 1 4
4 A sample_2 34 2 5
5 A sample_2 35 3 6
对于更嵌套的版本,可以使用
df[['index', 'number']] = df['index'].str.split('/', expand=True)
df = (pd.wide_to_long(df, ["sample_"], i=["index", 'number'], j="sample").reset_index()
.rename(columns={'index': 'letter', 'sample_': 'value'})
.pipe(lambda df: df.assign(sample='sample_' + df['sample'].astype(str), index=df.index+1))
)
相关内容
- 查找Kotlin中外表最后一次出现的索引值
- 如何在numpy中复制/切片具有高级索引的数组中的特定部分?
- Python警告:FutureWarning:支持多维索引
- PYTHON:使用if语句查找两个变量列相同的地方并存储索引
- 如何使用带二级索引键的番石榴缓存?
- 如何从数据框架中提取特定值的索引和列?
- 在推导式中访问字符串的索引
- 如何在不重复的情况下命名这个数据集的索引?
- 当我在分页器上使用时,索引号是从第二页开始
- 更简单的代码创建具有相同前缀+顺序索引的char类型的单元格数组?
- python数据框架与复合索引融化
- 如何使用Pandas融化多索引行并维护列中的索引信息
- 在panda中融化多索引数据帧
- 在融化多索引数据帧的同时维护熊猫索引
- 熊猫在多索引列上融化
- 熊猫:分层列和行 - 使用多索引/设置索引、堆叠/解堆叠、融化还是其他东西?
- 熊猫 - 在融化的DF上设置日期时间索引
- 与没有索引的熊猫融化相反
- Pandas在不手动指定级别的情况下在多索引列上融化(Python 3.5.1)
- 融化唯一索引的panda数据帧,以便与ggplot/rpy2一起使用
最新更新
- 在bash中查找右括号
- 密码加强脚本-如何大写第一个字母,并将整数列表追加到文件中的文本末尾,并重复列出它
- 我如何使用相同的布局为每个页面,但改变内容组件通过URL路由在Next.js?
- r语言 - 如何导入和绑定多个带有多个选项卡的Excel(名称常见)
- Jetpack Compose与Paging 3产生太多的网络请求
- 当我们设置git reset -soft时,历史记录会发生什么?
- 我们可以调用firebase作为服务器吗?
- 发送Post请求时出现启动错误,收到不支持的媒体类型415错误
- JPA继承问题与ObjectDB -字段未发现类型错误
- 插件部分中的依赖树
- 简单的GUI应用程序
- woocommerce在结帐页面上自动登录,只需使用billing_email
- X509Certificate2.Verify()运行错误,但证书正在工作
- BinanceAPIExceptionError: APIError(code=-2015): Invalid API-
- Python Scrapy代码从网站提取第一封电子邮件
- 我试图使用Plotly在python中创建一个地图图,但我的数据没有被导入或不能正常工作
- JPA储存库.save在Netty服务器channelInitializer处理程序不工作
- 通常在kafka模式注册表中注册动态protobuf模式
- 如何使用窗口提示符作为货币反应
- 如何获得光标位置悬停在GTK-rs绘图区域?
- Angular 12的数据绑定问题
- 使用Scapy和无线网卡扫描网络-网络不通错误
- Amplify GraphQL DataStore : auth rules: groupsField being ig
- Svelte自定义元素更新不工作
- 我的prinln方法没有输出我想要的相同输出
- azure function poppler utils
- r语言 - 取对角矩阵的幂
- multiplication Table in dart
- 如何捕获从装饰器抛出"FilesInterceptor"错误
- 错误:fatal:不是git存储库(或任何父目录):.git云源存储库
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium