Excel处理的易错问题

一、对Excel(DataFrame)进行切片并修改

需要根据是否对原始数据进行处理时选择是否进行 .copy() 处理:

1.对原始数据进行修改

如果需要对原始数据和切片同时进行修改,不需要 使用 .copy(),因为直接对切片进行修改会影响原始数据。

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# 对切片进行处理,会影响原始数据
df_slice = df[['A']]  # 不使用 .copy()
df_slice['A'] = df_slice['A'] * 10

# 原始数据也会被改变
print(df)

输出结果

    A  B
0  10  4
1  20  5
2  30  6

2. 不对原始数据进行修改:

如果不希望修改原始数据,仅对切片进行处理,那么应该使用 .copy(),以避免对原始数据的影响。

# 对切片进行处理,不影响原始数据
df_slice = df[['A']].copy()
df_slice['A'] = df_slice['A'] * 10

# 原始数据不会被改变
print(df)

输出结果

   A  B
0  10  4
1  20  5
2  30  6

二、删除 Excel 的某一列

1.对列名进行重排序

若使用 difference() 函数,返回的结果会按照字典序(也称为词典顺序)进行排序。字典序的排序规则如下:

  1. 数字:数字排在最前面,按从小到大的顺序排列。
  2. 大写字母:排在数字之后,按字母顺序排列。
  3. 小写字母:排在大写字母之后,按字母顺序排列。
import pandas as pd

columns = ['unix_ts', 'avg_rate', 'counter', 'Inst_rate', '9_rate']
df = pd.DataFrame(columns=columns)

# 使用 difference 函数删除 'unix_ts',结果按字典序排序
result = df.columns.difference(['unix_ts'])

# 输出结果:['9_rate', 'Inst_rate', 'avg_rate', 'counter']
print(result)

输出结果

Index(['9_rate', 'Inst_rate', 'avg_rate', 'counter'], dtype='object')

2.不改变原有列名顺序

应使用 drop() 函数来删除指定列,并保持原始顺序不变。

df = df.drop(columns=['unix_ts'])

# 其他列的顺序不会被改变
print(df.columns)

输出结果

Index(['avg_rate', 'counter', 'Inst_rate', '9_rate'], dtype='object')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值