excel命令,A列为站名,C列为年份,E列为水位,对不同站点不同年份的水位实行不同的变换
时间: 2024-04-08 16:29:34 浏览: 67
您可以使用Excel的函数和公式来实现对不同站点不同年份的水位进行不同的变换。以下是一种可能的方法:
1. 首先,您可以使用IF函数来设置条件,根据不同的站点和年份来执行不同的变换。例如,假设站点名在A列,年份在C列,水位在E列,您可以在F列中使用以下公式:
```
=IF(AND(A2="站点1",C2=2020), E2*2, IF(AND(A2="站点2",C2=2020), E2*3, IF(AND(A2="站点1",C2=2021), E2*4, IF(AND(A2="站点2",C2=2021), E2*5, E2))))
```
上述公式中,根据站点和年份的不同,设置了不同的水位变换方式。如果站点为"站点1"且年份为2020,则水位乘以2;如果站点为"站点2"且年份为2020,则水位乘以3;如果站点为"站点1"且年份为2021,则水位乘以4;如果站点为"站点2"且年份为2021,则水位乘以5;否则,保持原始水位不变。
2. 将上述公式应用到F列的所有单元格中,以实现对所有站点和年份的水位变换。
请根据您的实际需求和变换规则进行相应的调整。这只是一种示例方法,您可以根据具体情况进行修改和优化。
相关问题
python画图利用excel文件中的站名、经度、纬度在图上对应的经纬度上添加站点名和点
在Python中,你可以使用matplotlib库来创建地图,并结合pandas读取Excel文件的数据。首先,你需要安装`openpyxl`库用于处理Excel文件,然后按照以下步骤操作:
1. 导入所需的库:
```python
import matplotlib.pyplot as plt
import pandas as pd
from geopy.geocoders import Nominatim
```
2. 使用`pandas`读取Excel文件:
```python
df = pd.read_excel('your_file.xlsx', sheet_name='Sheet1') # 更改为你实际的文件路径和工作表名称
```
3. 确保Excel文件中包含站名(name)、经度(longitude)和纬度(latitude)列。如果不是,则需要相应地调整。
4. 使用geopy的Nominatim服务将站名转换为经纬度坐标:
```python
geolocator = Nominatim(user_agent="geoapiExercises")
def get_location(row):
location = geolocator.geocode(row['name'])
if location:
return (location.latitude, location.longitude)
else:
print(f"无法找到地址:{row['name']}")
return None
# 使用apply函数应用get_location函数到DataFrame每一行
df['coordinates'] = df.apply(get_location, axis=1)
# 删除找不到位置的行,如果需要的话
df = df[df.coordinates.notna()]
```
5. 生成地图并标记站点:
```python
plt.figure(figsize=(10, 6))
world_map = plt.imread('worldmap.png') # 你可以从互联网下载世界地图作为背景图片
ax = plt.imshow(world_map, extent=[-180, 180, -90, 90], interpolation='bicubic')
for _, row in df.iterrows():
lat, lon = row['coordinates']
ax.plot(lon, lat, 'ro', markersize=5) # 圆形红点代表站点
plt.text(lon, lat, row['name'], fontsize=8, horizontalalignment='center', verticalalignment='bottom')
plt.title('站点分布')
plt.xlabel('经度')
plt.ylabel('纬度')
plt.show()
```
C语言从键盘输入若干行文本,以“END!”结束,使用邻接表构成图来表达地铁线路,存储武汉地铁若干站点在相邻站点的线路信息,线路信息仅包含两相邻站点名称与其相距的距离。其中地铁线路均为双向线路,不同线路中相同站名的地铁站为转乘车站,打印换乘站点的名称及与该站点相邻的站点的个数
以下是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STATION_NUM 50 // 最大车站数
// 定义地铁线路的结构体
struct SubwayLine {
char station1[20]; // 车站1名称
char station2[20]; // 车站2名称
int distance; // 距离
};
// 定义邻接表的结构体
struct AdjListNode {
int dest; // 目标车站在数组中的下标
int distance; // 距离
struct AdjListNode* next; // 下一个邻接节点
};
// 定义车站的结构体
struct Station {
char name[20]; // 车站名称
struct AdjListNode* head; // 邻接表头节点
};
// 定义邻接表的结构体
struct AdjList {
int num_members; // 相邻车站的个数
struct AdjListNode* head; // 邻接表头节点
};
// 定义地铁线路数组和车站数组
struct SubwayLine subway_lines[MAX_STATION_NUM];
struct Station stations[MAX_STATION_NUM];
// 定义全局变量
int num_stations = 0;
// 添加邻接节点
void add_adj_node(struct AdjListNode** head_ref, int dest, int distance) {
struct AdjListNode* new_node = (struct AdjListNode*) malloc(sizeof(struct AdjListNode));
new_node->dest = dest;
new_node->distance = distance;
new_node->next = (*head_ref);
(*head_ref) = new_node;
}
// 添加车站
void add_station(char* name) {
struct Station station;
strcpy(station.name, name);
station.head = NULL;
stations[num_stations++] = station;
}
// 添加地铁线路
void add_subway_line(char* station1, char* station2, int distance) {
// 查找车站在数组中的下标
int index1 = -1, index2 = -1;
for (int i = 0; i < num_stations; i++) {
if (strcmp(stations[i].name, station1) == 0) {
index1 = i;
}
if (strcmp(stations[i].name, station2) == 0) {
index2 = i;
}
if (index1 != -1 && index2 != -1) {
break;
}
}
// 如果车站不存在,则添加车站
if (index1 == -1) {
add_station(station1);
index1 = num_stations - 1;
}
if (index2 == -1) {
add_station(station2);
index2 = num_stations - 1;
}
// 添加邻接节点
add_adj_node(&stations[index1].head, index2, distance);
add_adj_node(&stations[index2].head, index1, distance);
}
// 打印换乘站点的名称及与该站点相邻的站点的个数
void print_transfer_stations() {
printf("Transfer Stations:\n");
for (int i = 0; i < num_stations; i++) {
struct AdjListNode* cur = stations[i].head;
int num_adj = 0;
while (cur != NULL) {
if (strcmp(stations[i].name, stations[cur->dest].name) == 0) {
printf("%s: ", stations[i].name);
while (cur != NULL) {
if (strcmp(stations[i].name, stations[cur->dest].name) != 0) {
printf("%s ", stations[cur->dest].name);
}
cur = cur->next;
num_adj++;
}
printf("(%d)\n", num_adj);
break;
}
cur = cur->next;
num_adj++;
}
}
}
int main() {
// 从键盘输入地铁线路信息
char input[100];
printf("Input subway lines (END! to end):\n");
while (1) {
fgets(input, 100, stdin);
if (strcmp(input, "END!\n") == 0) {
break;
}
char* station1 = strtok(input, " ");
char* station2 = strtok(NULL, " ");
int distance = atoi(strtok(NULL, " "));
station2[strlen(station2) - 1] = '\0'; // 去掉换行符
add_subway_line(station1, station2, distance);
}
// 打印换乘站点的名称及与该站点相邻的站点的个数
print_transfer_stations();
return 0;
}
```
输入样例:
```
洪山广场 金融港 10
金融港 洪山公园 5
洪山公园 洪山广场 3
洪山广场 珞狮南路 8
珞狮南路 佛祖岭 7
佛祖岭 珞狮南路 6
END!
```
输出样例:
```
Transfer Stations:
洪山广场: 洪山公园 珞狮南路 (2)
珞狮南路: 洪山广场 佛祖岭 (2)
```
阅读全文