你可能写的确实有点乱,我给你规整了一下,你运行看下是不是这个意思:
运行结果:
代码:
import pandas as pd
file_path = "C:/Users/you/Desktop/zb/选中.x1sx" # 替换为实际的文件路径
# 读取 Excel 文件到 DataFrame
df = pd.read_excel(file_path)
condition_a = df['代码'].astype(str).str[:2] == '11' # 判断前两位是否为 '11'
condition_b = df['代码'].astype(str).str[:2] == '22' # 判断前两位是否为 '22'
df.loc[condition_a, '代码'] = 'abc' + df.loc[condition_a, '代码'].astype(str)
df.loc[condition_b, '代码'] = 'def' + df.loc[condition_b, '代码'].astype(str)
# 将修改后的数据保存到新的 Excel 文件
output_file_path = "C:/Users/you/Desktop/zb/选中.x1sx" # 替换为输出文件的路径
df.to_excel(output_file_path, index=False)
1.你既然想要前两位,那总要先把前两位切片出来吧,你切片的代码呢
startwith也是个办法,但是我看你把代码注释了?
2.==11是几个意思,str怎么可以和int去比呢
解决方案
首先,我们需要使用Python的pandas库来操作表格数据。首先,我们需要将表格数据导入到Python中。假设表格文件名为data.xlsx,我们可以使用pandas的read_excel函数来导入数据。代码如下:
import pandas as pd
# 读取表格数据
df = pd.read_excel('data.xlsx')
接下来,我们可以使用pandas的apply函数来对每个数值进行转换操作。代码如下:
def convert_value(value):
# 判断前两位是11还是22
if str(value)[:2] == '11':
return 'abc' + str(value)
elif str(value)[:2] == '22':
return 'def' + str(value)
else:
return value
# 对指定列的数值进行转换
df['列名'] = df['列名'].apply(convert_value)
上述代码中的'列名'需要替换为你的表格中需要转换的列的名称。代码中的convert_value函数根据转换规则进行转换操作,并返回转换后的数值。最后,我们将转换后的数值覆盖原来的数值。
最后,我们可以使用pandas的to_excel函数将处理后的数据重新保存到原来的表格文件中。代码如下:
# 保存到原来的表格文件中
df.to_excel('data.xlsx', index=False)
上述代码中的'data.xlsx'需要替换为你的表格文件的名称。
完整的解决方案如下:
import pandas as pd
def convert_value(value):
# 判断前两位是11还是22
if str(value)[:2] == '11':
return 'abc' + str(value)
elif str(value)[:2] == '22':
return 'def' + str(value)
else:
return value
# 读取表格数据
df = pd.read_excel('data.xlsx')
# 对指定列的数值进行转换
df['列名'] = df['列名'].apply(convert_value)
# 保存到原来的表格文件中
df.to_excel('data.xlsx', index=False)
请将上述代码中的'data.xlsx'和'列名'分别替换为你的表格文件的名称和需要转换的列的名称。