pandas 重命名 列名 指定列 修改 删除指定列 增减列

 

import pandas as pd

# 创建一个简单的DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# 添加新列
df['C'] = [7, 8, 9]

print(df)

 

 

@staticmethod
def modify_df_mask(df: pd.DataFrame, zone_index_name_map: Dict, ):
"""
对pd.DataFrame列值修改
"""
"""
FutureWarning: Setting an item of incompatible dtype is deprecated and will raise in a future error of pandas. Value '[320, 439)' has dtype incompatible with int64, please explicitly cast to a compatible dtype first.
Cast a pandas object to a specified dtype ``dtype``.
HOW TO
df[column_name].astype('str').mask(df[column_name] == order_index, order_index_val, inplace=True)
"""
rename = {}
for column_name, order_index_lst in zone_index_name_map.items():
tmp_column_name = f'tmp_{column_name}'
rename[tmp_column_name] = column_name
new_column_name_val = []
for i in range(len(df[column_name])):
new_column_name_val.append(order_index_lst[df[column_name][i]])
df[tmp_column_name] = new_column_name_val
df.drop([column_name], axis=1, inplace=True)
CommonQuery.modify_df_rename(df, rename)

@staticmethod
def modify_df_rename(df: pd.DataFrame, name_to_show_dict: Dict, ):
"""
对pd.DataFrame列名重命名
"""
if not df.empty:
if name_to_show_dict:
df.rename(columns=name_to_show_dict, inplace=True)

 

 

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.eval方法的使用。

 

DataFrame.eval(self,expr,inplace = False,** kwargs )                  [源代码]

评估描述DataFrame列上的操作的字符串。

仅在列上操作,而不在特定的行或元素上操作。这使 eval可以运行任意代码,如果将用户输入传递给此函数,可能会使您容易受到代码注入的攻击。

 

参数:

expr : str

要评估的表达式字符串。

inplace : bool,默认为False

如果表达式包含一个赋值,则是否就地执行操作并更改现有的DataFrame。否则,将返回一个新的DataFrame

0.18.0版的新功能。

kwargs : dict

有关eval()接受的关键字参数的完整详细信息, 请参见文档query()

返回值:

ndarray,标量或pandas对象

评估结果。

 

Notes

有关更多详细信息,请参见的API文档eval()。有关详细示例,请参见使用eval增强性能

例子

>>> df = pd.DataFrame({'A': range(1, 6), 'B': range(10, 0, -2)})
>>> df
A B
0 1 10
1 2 8
2 3 6
3 4 4
4 5 2
>>> df.eval('A + B')
0 11
1 10
2 9
3 8
4 7
dtype: int64

允许分配,尽管默认情况下不修改原始DataFrame

>>> df.eval('C = A + B')
A B C
0 1 10 11
1 2 8 10
2 3 6 9
3 4 4 8
4 5 2 7
>>> df
A B
0 1 10
1 2 8
2 3 6
3 4 4
4 5 2

使用inplace=True修改原来的数据帧

>>> df.eval('C = A + B', inplace=True)
>>> df
A B C
0 1 10 11
1 2 8 10
2 3 6 9
3 4 4 8
4 5 2 7



指定列 修改 fillna
df["a"] = df.loc[:, "a"].fillna('null')
 重命名 列名
 
如何在Pandas中根据条件替换列中的值|极客教程 https://geek-docs.com/pandas/pandas-dataframe/how-to-replace-values-in-column-based-on-condition-in-pandas.html
 

Pandas的掩蔽函数是为了用一个条件替换任何行或列的值。现在我们使用这个屏蔽条件,将性别栏中所有的 “女性 “改为0。

 

语法: df[‘column_name’].mask( df[‘column_name’] == ‘some_value’, value , inplace=True )

 
 
 



在Pandas中根据条件替换列中的值

venv/Lib/site-packages/pandas/core/frame.py


Rename columns using a mapping:

>>> df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
>>> df.rename(columns={"A": "a", "B": "c"})
   a  c
0  1  4
1  2  5
2  3  6

删除指定列

for c in list(df.columns):
  if c.endswith(self.magic_field_range_order()):
     df = df.drop(columns=c)

 

 
posted @ 2024-07-30 16:00  papering  阅读(77)  评论(0编辑  收藏  举报