import pandas as pd
# 读取 CSV 文件
df = pd.read_csv('E:\\Sentinel1\\yangben\\yangben.csv', encoding='gbk')
# 定义优势树种类型及对应的
tree_types = {
'松木': lambda d, h: 0.12703 * (d ** 2 * h) ** 0.79775,
'刺槐': lambda d, h: (0.05527 * (d ** 2 * h) ** 0.8576) + (0.02425 * (d ** 2 * h) ** 0.7908) + (0.0545 * (d ** 2 * h) ** 0.4574),
#http://www.xbhp.cn/news/11502.html
'栎类': lambda d, h: 0.16625 * (d ** 2 * h) ** 0.7821,
'柳杉': lambda d, h: (0.2716 * (d ** 2 * h) ** 0.7379) + (0.0326 * (d ** 2 * h) ** 0.8472) + (0.0250 * (d ** 2 * h) ** 1.1778) + (0.0379 * (d ** 2 * h) ** 0.7328),
'马尾松': lambda d, h: 0.0973 * (d ** 2 * h) ** 0.8285,
'其他硬阔': lambda d, h: (0.0125 * (d ** 2 * h) ** 1.05) + (0.000933 * (d ** 2 * h) ** 1.23) + (0.000394 * (d ** 2 * h) ** 1.20),
'杉木': lambda d, h: (0.00849 * (d ** 2 * h) ** 1.10730) + (0.00175 * (d ** 2 * h) ** 1.091916) + (0.00071 * d ** 3.88664),
'湿地松': lambda d, h: 0.01016 * (d ** 2 * h) ** 1.098,
'香椿': lambda d, h: (0.05560 * (d ** 2 * h) ** 0.850193) + (0.00665 * (d ** 2 * h) ** 1.051841) + (0.05987 * (d ** 2 * h) ** 0.574327) + (0.01476 * (d ** 2 * h) ** 0.808395),
#http://www.xbhp.cn/news/11502.html
'栎类': lambda d, h: 0.16625 * (d ** 2 * h) ** 0.7821,
'柳杉': lambda d, h: (0.2716 * (d ** 2 * h) ** 0.7379) + (0.0326 * (d ** 2 * h) ** 0.8472) + (0.0250 * (d ** 2 * h) ** 1.1778) + (0.0379 * (d ** 2 * h) ** 0.7328),
'马尾松': lambda d, h: 0.0973 * (d ** 2 * h) ** 0.8285,
'其他硬阔': lambda d, h: (0.0125 * (d ** 2 * h) ** 1.05) + (0.000933 * (d ** 2 * h) ** 1.23) + (0.000394 * (d ** 2 * h) ** 1.20),
'杉木': lambda d, h: (0.00849 * (d ** 2 * h) ** 1.10730) + (0.00175 * (d ** 2 * h) ** 1.091916) + (0.00071 * d ** 3.88664),
'湿地松': lambda d, h: 0.01016 * (d ** 2 * h) ** 1.098,
'香椿': lambda d, h: (0.05560 * (d ** 2 * h) ** 0.850193) + (0.00665 * (d ** 2 * h) ** 1.051841) + (0.05987 * (d ** 2 * h) ** 0.574327) + (0.01476 * (d ** 2 * h) ** 0.808395),
'油桐': lambda d, h: (0.086217 * d ** 2.00297) + (0.072497 * d ** 2.011502) + (0.035183 * d ** 1.63929),
'榉树': lambda d, h: (0.03 * (d ** 2 * h) ** 0.8734) + (0.0174 * (d ** 2 * h) ** 0.8574) + (0.4562 * (d ** 2 * h) ** 0.3193) + (0.0028 * (d ** 2 * h) ** 0.9675),
}
# 遍历样本并计算地上生物量```python
for i, row in df.iterrows():
tree_type = row['优势树']
if tree_type in tree_types:
d = row['平均胸径']
h = row['林分平均树高']
biomass = tree_types[tree_type](d, h)
df.at[i, '生物量'] = biomass
# 将计算后的地上生物量写入 CSV 文件
df.to_csv('E:\\Sentinel1\\yangben\\yangben_processed.csv', index=False)