我把 chatgpt4 和 claud 都搞晕、蒙了,当然更可能是我的问题,一直没想过这个问题,毕竟能用就行了。
一个空白的 excel 文件,上面用行 A 、B 、C..............MA.........MR....这样标注,行用 1 、2 、3 、4.......这样标注着。点中最左上的单元格是 A1,第二列是 B1 。
如果用 pandas 。我想计算 B 列-A 列并输出,到底该怎么代码呢?
我看他的意思,又 gg 了下,第一行好像才是他们认为的列
1
Tumblr 274 天前
> 如果用 pandas 。我想计算 B 列-A 列并输出,到底该怎么代码呢?
这个是不是可以理解为两个问题? 1. 如何把 Excel 中的数据导入到 pandas 2. 如何对两列进行相减 如果是在 Excel 中,很简单, = B1 - A1 |
2
zhlenmao OP @Tumblr 我真是受不了我自己了。如果第一行我定义下,就是 A1=A ,B1=B ,以此类推,那么类似这样
A B C 1 A B C 2 1 666 33 3 2 33 55 4 3 55 99 . import pandas as pd # Excel 文件路径 file_path = 'abc.xlsx' # 读取 Excel 文件 df = pd.read_excel(file_path) df['Difference'] = df['C'] - df['A'] # 输出新计算的差值列 print(df['Difference']) 这是可以的。第 1 行成了列标题。 A B C 1 2 2 2 2 1 666 33 3 2 33 55 4 3 55 99 这样再执行上面的代码就是 error 报错了。因为列标题成了 2 2 2 。问题是我想指定 A B C 这个东东来定义”列“,好做运算 搞不明白了,头晕了脑涨了 :) |
3
c6h6benzene 274 天前 via iPhone
ABC 是列,123 是行。虽然 df 没怎么写过,但好像有.row .col 指定行列(坐标)取数的写法。
|
4
Maxhimax 274 天前 via iPhone 8
你的表述能力堪忧。
|
5
zhlenmao OP def excel_column_number(column_label):
"""将 Excel 列的字母标识符转换为从 0 开始的索引""" column_number = 0 for c in column_label: column_number = column_number * 26 + (ord(c.upper()) - ord('A')) + 1 # 返回从 0 开始的索引 return column_number - 1 # 举例使用 import pandas as pd # 读取 Excel 文件 df = pd.read_excel('反查数据 (240108)_test.xlsx') # 假设你想获取列标识符为"C"的数据 column_index = excel_column_number("MR") column_data = df.iloc[:, column_index] # 显示结果 print(column_data) 。结。 |
6
anson264556364 274 天前
不知有没有 excel 好用的辅助工具
|
7
Tumblr 274 天前
@anson264556364 #6 Power BI 😁
|
8
sakilascott 274 天前
多年 excel 工作者,没看懂
|
9
tikazyq 274 天前
问题描述不清楚,上帝来了都没辙。你的问题看上去是 read_excel 中自动将第二行识别为了表头,但你像要第一行识别为表头,可以查一下文档,有个参数应该叫 skip_rows
|
10
anson264556364 274 天前
@Tumblr 好像挺好,好像挺复杂
|
11
visper 274 天前
你这跟 excel 没关系,是跟 pandas 加载数据的时候怎么指定列名有关系吧。
|
12
Muniesa 274 天前 via Android
我是 ai 我也懵,我猜你的目的大概可以通过在 read_excel 的参数里加上 header=None, names=['A', 'B','C']实现
|
13
xyfan 274 天前
pandas 从 Excel 导入数据时默认将第一行当作列名(保存为 Excel 时也是如此),如果你不想让 pandas 将第一行识别为列名,而是将其识别为第一行数据,只需要在导入数据时指定 read_excel 的参数 header=None ,如楼上所示。令:表达能力堪忧,搜索能力也堪忧,我使用关键词“pandas excel 第一行识别为数据”进行搜索,结果中既有将第一行作为列名的教程,也有不将第一行作为列名的教程,完全能够解决你的问题。
|
14
ZnductR0MjHvjRQ3 274 天前
哥们 你为什么一定要让他明白?你绕圈问他 然后让他给一些差不多的 你去理解代码 然后改不比让他搞明白强吗
|
15
cyspy 274 天前
直接用 row 和 column ,陆台对行列的翻译是反的
|
16
zhlenmao OP 哈哈哈。我来总结下:pandas 读取时,是不理会列标签 A 、B 、C ,行标签 1 、2 、3.....这些的,他只是读入了整个表。而我是天真的想着他会读进这些东西 :)
|