You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从含LULC数据的矩阵生成带新行名的列表

LULC矩阵转类型组合-值列表的实现方法

注意:原输入矩阵中第二行的行名「Second」应为笔误,对应目标列表的「Trees」,以下方法均基于修正后的行名(Water、Trees、Building)进行。

方法1:Excel手动处理(适合小数据集)

  1. 修正原矩阵的行名为Water、Trees、Building
  2. 新建两列,分别命名为类型组合和Value
  3. 根据目标格式的对应关系,逐个填写内容:
    • Water-Water → 20(原Water行Water列数值)
    • Water-Trees →70(原Trees行Water列数值)
    • Water-Building →10(原Building行Water列数值)
    • Trees-Trees →10(原Trees行Trees列数值)
    • Trees-Water →80(原Water行Trees列数值)
    • Trees-Building →10(原Building行Trees列数值)
    • Building-Water →10(原Building行Water列数值)
    • Building-Trees →10(原Building行Trees列数值)
    • Building-Building →30(原Building行Building列数值)

方法2:Python pandas自动化处理(适合大数据集)

使用pandas的重塑功能快速转换,代码如下:

import pandas as pd

# 构建修正后的原矩阵数据
data = {
    'Water': [20, 70, 10],
    'Trees': [80, 10, 10],
    'Building': [60, 10, 30]
}
df = pd.DataFrame(data, index=['Water', 'Trees', 'Building'])

# 转换为长格式并生成类型组合列
melted = df.unstack().reset_index()
melted.columns = ['原列名', '原行名', 'Value']
melted['类型组合'] = melted['原列名'] + '-' + melted['原行名']

# 按目标顺序筛选整理(无需特定顺序可跳过此段)
target_order = [
    'Water-Water', 'Water-Trees', 'Water-Building',
    'Trees-Trees', 'Trees-Water', 'Trees-Building',
    'Building-Water', 'Building-Trees', 'Building-Building'
]
result = melted[melted['类型组合'].isin(target_order)].set_index('类型组合')[['Value']].loc[target_order]

# 输出结果
print(result)

执行后将直接输出符合要求的列表格式。

方法3:R语言自动化处理(适合大数据集)

使用tidyr包的重塑功能实现,代码如下:

# 构建修正后的原矩阵数据
df <- data.frame(
    Water = c(20, 70, 10),
    Trees = c(80, 10, 10),
    Building = c(60, 10, 30),
    row.names = c("Water", "Trees", "Building")
)

# 加载tidyr包(未安装需先执行install.packages("tidyr"))
library(tidyr)

# 转换为长格式并生成类型组合列
melted <- pivot_longer(df, cols = everything(), names_to = "原列名", values_to = "Value")
melted$原行名 <- rownames(df)[rep(1:nrow(df), ncol(df))]
melted$类型组合 <- paste(melted$原列名, melted$原行名, sep = "-")

# 按目标顺序筛选整理(无需特定顺序可跳过此段)
target_order <- c(
    "Water-Water", "Water-Trees", "Water-Building",
    "Trees-Trees", "Trees-Water", "Trees-Building",
    "Building-Water", "Building-Trees", "Building-Building"
)
result <- melted[melted$类型组合 %in% target_order, ]
result <- result[match(target_order, result$类型组合), ]
result <- result[, c("类型组合", "Value")]
rownames(result) <- result$类型组合
result$类型组合 <- NULL

# 输出结果
print(result)

内容的提问来源于stack exchange,提问作者findingnemo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 09:35:32