一、对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()
函数,返回的结果会按照字典序(也称为词典顺序)进行排序。字典序的排序规则如下:
- 数字:数字排在最前面,按从小到大的顺序排列。
- 大写字母:排在数字之后,按字母顺序排列。
- 小写字母:排在大写字母之后,按字母顺序排列。
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')