laiyuanjie 发表于 2024-3-5 15:53:48

求助一个关于pandas的问题

如图,,我想删掉一些款式,就是把“数量”这一列中,只要同一款式~超过3个有数据的~就把整个款都删掉,,像图里就是把:1001、1003,这两个有三个非空的款给整款删掉,,用PANDAS该怎么解决,{:5_107:}

FishC 发表于 2024-3-5 15:54:06

你可以使用Pandas中的groupby函数和size函数来实现这个功能。首先,根据款式进行分组,然后计算每个款式在数量列中的非空值数量。接下来,通过筛选条件来选择需要删除的款式,最后使用drop函数删除这些款式。

下面是一个代码示例:

import pandas as pd

# 创建一个示例数据表
data = {
    '款式': ['1001', '1001', '1001', '1002', '1002', '1002', '1003', '1003', '1003'],
    '数量':
}
df = pd.DataFrame(data)

# 计算每个款式在数量列中的非空值数量
counts = df.groupby('款式')['数量'].count()

# 选择需要删除的款式
to_delete = counts.index

# 删除这些款式的所有行
df = df[~df['款式'].isin(to_delete)]

print(df)

输出结果为:
款式   数量
310024.0
41002NaN
510026.0

在这个例子中,款式1001和1003被成功删除了,因为它们在数量列中有三个或更多个非空值。而款式1002没有被删除,因为它只有两个非空值。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

不二如是 发表于 2024-3-5 21:16:22

从数据中移除了款式为1001和1003的行,因为它们在“数量”这一列中有超过3个非空的数据。

处理后的数据包括款式1002、1004和1005,这些款式的“数量”列中非空的数据没有超过3个。

以下是经过筛选的DataFrame内容:



代码:

import pandas as pd

# 从实际的CSV文件或其他数据源中加载DataFrame
# df = pd.read_csv('your_file.csv')

# 这里创建一个示例DataFrame来模拟用户提供的数据
data = {
    '款式': ,
    '颜色': ['红', '蓝', '绿', '黄', '黑', '红', '蓝', '绿', '黑', '红', '蓝', '绿', '黑', '红', '蓝', '绿', '黑', '红', '蓝', '绿'],
    '数量':
}

# 创建DataFrame
df = pd.DataFrame(data)

# 筛选出数量非空的行
df_not_null = df.notnull()]

# 统计每个款式数量非空的次数
count_non_null = df_not_null.groupby('款式').size()

# 找出数量非空次数超过3次的款式
to_remove = count_non_null.index

# 删除这些款式的所有行
df_filtered = df[~df['款式'].isin(to_remove)]

# 输出处理后的DataFrame
print(df_filtered)
页: [1]
查看完整版本: 求助一个关于pandas的问题