最近经常使用 pythonpythonpython 对 ExcelExcelExcel 文件进行 ETLETLETL 操作,其中 pandaspandaspandas 中一些函数经常用到,因此写下来作为初步总结。本章内容偏向于数据的定位与提取
1. 已知某值,定位它在列表 list1list1list1 中的位置,即返回它的索引
# list 的 index 方法有个缺点 --> 就是若某个值在列表中重复出现,这个方法总是只返回第一次出现的索引
index_num = list1.index('specified_value')
2. 将某列值设为 DataFrameDataFrameDataFrame 的索引
df.set_index('col_name', inplace=True)
3. 重置索引
df.reset_index(inplace=True, drop=True)
# 若drop=False, 则原索引会在DataFrame中出现
4. 删除 DataFrameDataFrameDataFrame 中的第一行数据
只有在使用方法 333 后或者DataFrame本身就没有特定索引时有效
df.drop([0], axis=0)
5. 在某一列中查找特定值,找到后获取特定值所在行的所有值
\space \space \space \space 方法1:(几个月后回来瞄一眼发现这真是个笨b方法233)
🔺:需要结合方法 111
import pandas as pd
df = pd.DataFrame({
"A": ["A0", "A1", "A2", "A3"],
"B": [pd.NA, "B1", pd.NA, "B3"],
"key": ["K0", "K1", "K2", "K1"],}
)
"""
A B key
0 A0 <NA> K0
1 A1 B1 K1
2 A2 <NA> K2
3 A3 B3 K1
"""
# 比如获取'key'列中,值为'K1'的所有行的值
df[df.iloc[:, df.columns.tolist().index('key')] == 'K1']
"""
A B key
1 A1 B1 K1
3 A3 B3 K1
"""
\space \space \space \space 方法2:
# 同样是获取'key'列中,值为'K1'的所有行的值
df[df['key'] == 'K1']
"""
A B key
1 A1 B1 K1
3 A3 B3 K1
"""
6. 列的重命名
🔺:需要结合字典
df.rename(columns={'original_name': 'new_name'}, inplace=True)
7. 按照特定顺序重新对 DataFrameDataFrameDataFrame 中的列重新排列
import pandas as pd
df = pd.DataFrame({
"A": ["A0", "A1", "A2", "A3"],
"B": [pd.NA, "B1", pd.NA, "B3"],
"key": ["K0", "K1", "K2", "K1"],}
)
"""
A B key
0 A0 <NA> K0
1 A1 B1 K1
2 A2 <NA> K2
3 A3 B3 K1
"""
order = ['key', 'A', 'B']
df = df[order]
print(df)
"""
key A B
0 K0 A0 <NA>
1 K1 A1 B1
2 K2 A2 <NA>
3 K1 A3 B3
"""
8. 将某行的值设为 DataFrameDataFrameDataFrame 的列名
🔺:该列长度要与 df.columnsdf.columnsdf.columns 的长度一致
import pandas as pd
df = pd.DataFrame({
"A": ["A0", "A1", "A2", "A3"],
"B": [pd.NA, "B1", pd.NA, "B3"],
"key": ["K0", "K1", "K2", "K1"],}
)
"""
A B key
0 A0 <NA> K0
1 A1 B1 K1
2 A2 <NA> K2
3 A3 B3 K1
"""
df.columns = df.iloc[1, :].tolist()
print(df)
"""
K1 A1 B1
0 K0 A0 <NA>
1 K1 A1 B1
2 K2 A2 <NA>
3 K1 A3 B3
"""
最后更新日期:2022/7/8