Pandas 数据操作技巧总结

本文介绍了如何使用Pandas进行字段拆分,包括按分隔符拆分列和提取特定字段。还讨论了如何定位和替换DataFrame中特定行和列的值,以及如何处理空值和去重。此外,还涵盖了按条件查找数据、按关键字搜索和按日期排序数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何将pandas的一个字段进行拆分

在使用pandas进行数据处理的时候,有时候需要将一个字段进行拆分,这时候可以使用pandas的str.split()函数来实现。

例如,我们有一个包含姓名和姓氏的列,现在需要将它们分开成两列。可以使用以下代码来实现:

import pandas as pd

data = {'name': ['张三', '李四', '王五'],
        'age': [20, 25, 30]}
df = pd.DataFrame(data)

# 将name列拆分成first_name和last_name两列
df[['last_name', 'first_name']] = df['name'].str.split('', expand=True)

print(df)

输出结果为:

  name  age last_name first_name
0   张三   20         张          三
1   李四   25         李          四
2   王五   30         王          五

在上面的代码中,我们首先使用pandas创建了一个包含姓名和年龄的DataFrame。然后,我们使用str.split()函数将name列拆分成了两列,并将拆分后的结果赋值给了last_name和first_name两列。

需要注意的是,str.split()函数返回的是一个DataFrame,我们需要使用expand参数将其展开成多列。另外,拆分后的每一列默认会带有一个空格,如果不需要可以使用strip()函数去除。

希望以上内容能够对你有所帮助。

将告警字段中的告警对象中的IP地址拆分出来,形成一个单独的HOSTS字段:

原始数据格式如下:核心业务系统四代DST—12.103.14.***

拆分代码如下:

alerts['hosts'] = alerts['告警对象'].str.splic('-',expand = 'true')[1]

在pandas中如何准确定位到某一行和列中的值

在pandas中,可以使用.at[].iloc[]函数来查看某行某列的值。

.at[]函数可以通过指定行标签和列标签的方式来查看某一个元素的值。例如,要查看第0行第1列的元素,可以使用以下代码:

import pandas as pd

data = {'name': ['张三', '李四', '王五'],
        'age': [20, 25, 30]}
df = pd.DataFrame(data)

# 查看第0行第1列的元素
print(df.at[0, 'age'])  # 输出 20

.iloc[]函数可以通过指定行索引和列索引的方式来查看某一个元素的值。例如,要查看第0行第1列的元素,可以使用以下代码:

import pandas as pd

data = {'name': ['张三', '李四', '王五'],
        'age': [20, 25, 30]}
df = pd.DataFrame(data)

# 查看第0行第1列的元素
print(df.iloc[0, 1])  # 输出 20

需要注意的是,行标签和行索引是不同的,行标签是指行的名称,而行索引是指行的数字编号,从0开始。

pandas中如何将两个数值型的列组合为一个新的列

在pandas中,可以使用加法运算符(+)将两个数值型的列组合为一个新的列。例如,要将两个列A和B组合成一个新的列C,可以使用以下代码:

import pandas as pd

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

# 将A列和B列组合成C列
df['C'] = df['A'] + df['B']

print(df)

输出结果为:

   A  B  C
0  1  4  5
1  2  5  7
2  3  6  9

在上面的代码中,我们首先使用pandas创建了一个包含列A和列B的DataFrame。然后,我们使用加法运算符将列A和列B相加,并将结果赋值给了新的列C。

需要注意的是,如果两个列中存在缺失值,加法运算的结果也会是缺失值。如果想要忽略缺失值,可以使用.add()函数,并将fill_value参数设置为0。例如:

import pandas as pd
import numpy as np

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

# 将A列和B列组合成C列,忽略缺失值
df['C'] = df['A'].add(df['B'], fill_value=0)

print(df)

输出结果为:

     A    B    C
0  1.0  4.0  5.0
1  2.0  NaN  2.0
2  NaN  6.0  6.0

如何将pandas中的某一列转换为字符型

将pandas中的某一列转换为字符型,可以使用astype()函数。例如,将DataFrame中的column_name列转换为字符型,可以使用以下代码:

df['column_name'] = df['column_name'].astype(str)

需要注意的是,如果该列中包含了缺失值(NaN),转换后会变成字符串'nan'。如果希望将缺失值转换为空字符串'',可以使用以下代码:

df['column_name'] = df['column_name'].astype(str).replace('nan', '')

以上内容希望能对你有所帮助。

如何将取得pandas中某一列数据的所有去重之后的值

要取得pandas中某一列数据的所有去重之后的值,可以使用unique()函数。例如,要取得DataFrame中的column_name列的所有去重之后的值,可以使用以下代码:

unique_values = df['column_name'].unique()

unique()函数会返回一个numpy数组,其中包含了所有去重之后的值。如果想要将该数组转换为列表,可以使用tolist()函数。例如:

unique_values_list = df['column_name'].unique().tolist()

以上内容希望能对你有所帮助。

如何取得pandas中为空的行

可以使用isnull()函数来判断每一行是否为空,然后使用any(axis=1)函数来判断每一行是否存在至少一个为空的值。例如,要取得DataFrame中所有为空的行,可以使用以下代码:

null_rows = df[df.isnull().any(axis=1)]

在上面的代码中,我们首先使用isnull()函数判断每一行是否为空,然后使用any(axis=1)函数判断每一行是否存在至少一个为空的值,最后将结果赋值给null_rows变量。

需要注意的是,isnull()函数返回的是一个布尔型的DataFrame,其中每个元素的值表示该元素是否为空。any(axis=1)函数则会对每一行进行判断,如果存在至少一个为空的值,则返回True,否则返回False。

要展示出DataFrame中所有含有空值的行,可以使用isnull()函数来判断每一行是否含有空值,然后使用any(axis=1)函数来判断每一行是否存在至少一个空值。例如,要展示出DataFrame中所有含有空值的行,可以使用以下代码:

null_rows = df[df.isnull().any(axis=1)]
print(null_rows)

在上面的代码中,我们首先使用isnull()函数判断每一行是否含有空值,然后使用any(axis=1)函数判断每一行是否存在至少一个空值,最后将结果输出。

需要注意的是,isnull()函数返回的是一个布尔型的DataFrame,其中每个元素的值表示该元素是否为空。any(axis=1)函数则会对每一行进行判断,如果存在至少一个为空的值,则返回True,否则返回False。

希望以上内容能够对你有所帮助。

如何按某个字段来查找数据

如果要按某个字段来查找数据,可以使用pandas的.loc[]函数。该函数可以通过指定行标签和列标签的方式来查找数据。

例如,要查找DataFrame中所有age列大于等于25的行,可以使用以下代码:

import pandas as pd

data = {'name': ['张三', '李四', '王五'],
        'age': [20, 25, 30]}
df = pd.DataFrame(data)

# 查找age列大于等于25的行
result = df.loc[df['age'] >= 25]

print(result)

输出结果为:

  name  age
1   李四   25
2   王五   30

在上面的代码中,我们首先使用pandas创建了一个包含姓名和年龄的DataFrame。然后,我们使用.loc[]函数来查找age列大于等于25的行,并将结果赋值给了result变量。

需要注意的是,.loc[]函数可以通过逻辑运算符(如>=)来指定查找条件。如果要查找多个条件,可以使用逻辑运算符(如&|)进行组合。例如,要查找age列大于等于25并且name列为“李四”的行,可以使用以下代码:

result = df.loc[(df['age'] >= 25) & (df['name'] == '李四')]

希望以上内容能够对你有所帮助。

找到某列取值为null的行,并将其替换为某一列的内容

可以使用fillna()函数将某一列为空的数据替换为其它列的值。例如,要将DataFrame中的column_name列为空的数据替换为同一行中other_column_name列的值,可以使用以下代码:

df['column_name'].fillna(df['other_column_name'], inplace=True)

在上面的代码中,我们首先使用fillna()函数将column_name列中的空值替换为同一行中的other_column_name列的值,最后将结果赋值给column_name列。

需要注意的是,fillna()函数的inplace参数默认为False,表示不在原始DataFrame上进行修改。如果要在原始DataFrame上进行修改,则需要将inplace参数设置为True

希望以上内容能够对你有所帮助。

将某一行某一列的数据进行替换

如果要将某一行某一列的数据进行替换,可以使用.at[].iloc[]函数来定位到该元素,并将其替换为新的值。例如,要将DataFrame中第0行第1列的元素替换为新的值new_value,可以使用以下代码:

import pandas as pd

data = {'name': ['张三', '李四', '王五'],
        'age': [20, 25, 30]}
df = pd.DataFrame(data)

# 将第0行第1列的元素替换为新的值
df.at[0, 'age'] = 'new_value'

print(df)

输出结果为:

  name        age
0   张三  new_value
1   李四         25
2   王五         30

在上面的代码中,我们首先使用pandas创建了一个包含姓名和年龄的DataFrame。然后,我们使用.at[]函数定位到第0行第1列的元素,并将其替换为新的值new_value

需要注意的是,.at[]函数可以通过指定行标签和列标签的方式来定位到某一个元素。.iloc[]函数可以通过指定行索引和列索引的方式来定位到某一个元素。

希望以上内容能够对你有所帮助。

如何针对查找到的结果进行某列的数据替换

如果要针对查找到的符合条件的记录,进行数据的替换,可以使用.loc[]函数来定位到符合条件的记录,并将其替换为新的值。例如,要将DataFrame中所有age列大于等于25的行的name列替换为新的值new_name,可以使用以下代码:

import pandas as pd

data = {'name': ['张三', '李四', '王五'],
        'age': [20, 25, 30]}
df = pd.DataFrame(data)

# 查找age列大于等于25的行,并将name列替换为新的值
df.loc[df['age'] >= 25, 'name'] = 'new_name'

print(df)

输出结果为:

   name  age
0    张三   20
1  new_name  25
2  new_name  30

在上面的代码中,我们首先使用pandas创建了一个包含姓名和年龄的DataFrame。然后,我们使用.loc[]函数来查找age列大于等于25的行,并将这些行的name列替换为新的值new_name

需要注意的是,.loc[]函数可以通过逻辑运算符(如>=)来指定查找条件。如果要查找多个条件,可以使用逻辑运算符(如&|)进行组合。.loc[]函数也可以同时指定行标签和列标签,例如:

df.loc[df['age'] >= 25, ['name', 'age']] = ['new_name', 99]

这段代码会将age列大于等于25的行的name列替换为新的值new_name,并将这些行的age列替换为新的值99

希望以上内容能够对你有所帮助。

根因分析:

  • 发现问题:问题告警的内容同真实的告警列表中的内容对不上,如”对公对私大部分交易不可用“是指的什么告警?
  • 定位问题:ORACLE104临时表空间不足、oracle164undo表空间不足、oracle164锁表、oracle104延时,这几个根因对应的告警是什么?因为目前给到我们的只有告警,没有其它数据,在进行根因分析时,还是给到最接近的告警。

Pandas中如何用关键字找到符合条件的记录?

可以使用pandas的.str.contains()函数来在某列中按关键字查询符合条件的记录。例如,要在DataFrame中按关键字查询name列中含有“张”的记录,可以使用以下代码:

import pandas as pd

data = {'name': ['张三', '李四', '王五'],
        'age': [20, 25, 30]}
df = pd.DataFrame(data)

# 按关键字查询name列中含有“张”的记录
result = df[df['name'].str.contains('张')]

print(result)

输出结果为:

  name  age
0   张三   20

在上面的代码中,我们首先使用pandas创建了一个包含姓名和年龄的DataFrame。然后,我们使用.str.contains()函数来查询name列中含有“张”的记录,并将结果赋值给result变量。

需要注意的是,.str.contains()函数会返回一个布尔型的Series,其中每个元素的值表示该元素是否含有指定的关键字。

如果要查找多个关键字,可以使用正则表达式。例如,要查找name列中含有“张”或“李”的记录,可以使用以下代码:

result = df[df['name'].str.contains('张|李')]

希望以上内容能够对你有所帮助。

pandas如何按日期进行数据排序

如果要按日期字段进行排序,可以使用pandas的.sort_values()函数。该函数可以通过指定要排序的列的名称和排序方式来进行排序。

例如,要按DataFrame中的date列进行升序排序,可以使用以下代码:

import pandas as pd

data = {'date': ['2022-01-01', '2022-01-03', '2022-01-02'],
        'value': [20, 25, 30]}
df = pd.DataFrame(data)

# 按date列进行升序排序
result = df.sort_values(by='date')

print(result)

输出结果为:

         date  value
0  2022-01-01     20
2  2022-01-02     30
1  2022-01-03     25

在上面的代码中,我们首先使用pandas创建了一个包含日期和数值的DataFrame。然后,我们使用.sort_values()函数来按date列进行升序排序,并将结果赋值给result变量。

需要注意的是,.sort_values()函数会返回一个新的DataFrame,因此需要将结果赋值给一个新的变量。如果要在原始DataFrame上进行排序,则需要使用inplace=True参数。

如果要按照多个字段进行排序,可以在.sort_values()函数中指定多个列名,并按照优先级进行排序。例如,要按照date列和value列进行升序排序,可以使用以下代码:

result = df.sort_values(by=['date', 'value'])

希望以上内容能够对你有所帮助。

pandas如何对某一个字段值统计其发生的记录条数

如果要对某一个字段进行统计记录条数,可以使用pandas的.value_counts()函数。该函数可以对指定的列进行计数,并返回每个元素的计数结果。

例如,要统计DataFrame中name列中每个姓名出现的次数,可以使用以下代码:

import pandas as pd

data = {'name': ['张三', '李四', '王五', '张三', '张三']}
df = pd.DataFrame(data)

# 统计name列中每个姓名出现的次数
result = df['name'].value_counts()

print(result)

输出结果为:

张三    3
李四    1
王五    1
Name: name, dtype: int64

在上面的代码中,我们首先使用pandas创建了一个包含姓名的DataFrame。然后,我们使用.value_counts()函数来对name列进行计数,并将结果赋值给result变量。

需要注意的是,.value_counts()函数会返回一个Series,其中每个元素的索引为列中的每个唯一元素,值为该元素在列中出现的次数。

如果要对多个列进行计数,可以使用.groupby()函数进行分组,并在分组后的结果上使用.size()函数进行计数。例如,要统计DataFrame中name列和age列组合后的每个组合出现的次数,可以使用以下代码:

result = df.groupby(['name', 'age']).size()

希望以上内容能够对你有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值