75278350@qq.com 发表于 2024-10-23 16:44:18

缺失值不能进行替换

大神请帮忙看看,为啥不能进行缺失值替换。感谢!


import pandas as pd
data = pd.read_excel(r"C:\Users\附表5-1.xlsx")
data.filla(0,inplace=True)
profit = lambda p:p["营业收入"]-p["营业成本"]-p["其他费用"]
data["利润"] = data.apply(profit,axis = 1)
profit_status = lambda s:"盈利" if s["利润"]>0 else "亏损"
data["盈利状况"] = data.apply(profit_status,axis = 1)
data.head()

FishC 发表于 2024-10-23 16:44:32

根据您的代码,这里有几处需要修正的地方:

1. **修正filla函数拼写错误**:
   替换缺失值的方法为`fillna`而不是`filla`。请将代码改为:
   data.fillna(0, inplace=True)

2. **检查`profit`函数**:
   您的`profit`函数始终返回零,因为`p-p-p`的结果是零。您可能需要重新定义该函数。

3. **检查数据类型**:
   确保数据列类型是可以用于计算的数字类型,否则替换操作及后续计算可能出错。

4. **处理`apply`函数的应用**:
   `profit_status`函数应该应用于某一特定列,而不是整个数据框。

以下是一个修正的示例:

import pandas as pd

# 读取数据
data = pd.read_excel(r"C:\Users\附表5-1.xlsx")

# 缺失值替换为0
data.fillna(0, inplace=True)

# 假设存在一列名为"profit"的列需要处理
profit_col = "profit_column_name"# 替换为实际的列名

# 处理利润
profit = lambda p: p - p - p# 确保函数逻辑正确,这里逻辑可能需要调整
data = data.apply(profit)

# 根据利润状态给出盈利或亏损
profit_status = lambda s: "盈利" if s > 0 else "亏损"
data["profit_status"] = data.apply(profit_status)

# 显示数据
print(data.head())

请确保适当调整代码中的列名,并检查数据内容是否符合逻辑。

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

很cool的阳 发表于 2024-10-23 20:16:34

filla 应该是 fillna,这是一个拼写错误。fillna 函数用于填充数据框中的缺失值。
在使用 fillna 函数时,你需要指定要填充的缺失值类型。将所有的缺失值都填充为0,应该使用 data.fillna(0, inplace=True

75278350@qq.com 发表于 2024-10-24 09:26:37

很cool的阳 发表于 2024-10-23 20:16
filla 应该是 fillna,这是一个拼写错误。fillna 函数用于填充数据框中的缺失值。
在使用 fillna 函数时, ...

谢谢大神指点!!{:5_109:}
页: [1]
查看完整版本: 缺失值不能进行替换