gpt4 book ai didi

pandas - 缺少值的 Pandas 数据框乘法

转载 作者:行者123 更新时间:2023-12-03 08:45:43 24 4
gpt4 key购买 nike

我有一个带有2列( float 类型)的数据框,但是其中之一缺少由字符串“..”表示的数据。
执行乘法运算时,将引发异常,并且整个运算将被中止。
我试图实现的是对浮点值执行乘法,对缺少的值保留“..”。

2 *  6  
.. * 4

应该给 [12, ..]我找到了一个幼稚的解决方案,其中包括将 ..替换为0,然后执行乘法,然后再将0替换为 ..它似乎不是非常优化。还有其他解决方案吗?
df['x'] = pd.to_numeric(df['x'], errors='coerce').fillna(0)  
mg['x'] = df['x'] * df["Value"]
for col in mg.columns:
mg[col] = mg[col].apply(update)
def update(v):
if (v == 0):
return ".."
return v

最佳答案

您可以使用np.whereSeries.isna:

import numpy as np
mg['x'] = np.where(df['X'].isna(), df['X'], df['X']*df['Value'])

如果要用'..'替换null并乘以其他值:
mg['x'] = np.where(df['X'].isna(), '..', df['X']*df['Value'])

因此,在x列的Value为null的任何地方,它都将保持不变,否则将与Value列的相应行的值相乘

在您的解决方案中,您还可以执行fillna(1):
df['x'] = pd.to_numeric(df['x'], errors='coerce').fillna(1)  
mg['x'] = df['x'] * df["Value"]

这是我尝试的方法:
df = pd.DataFrame({'X': [ 2, np.nan],
'Value': [6, 4]})
df

X Value
0 2.0 6
1 NaN 4

np.where(df['X'].isna(), df['X'], df['X']*df['Value'])
array([12., nan])

关于pandas - 缺少值的 Pandas 数据框乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54827536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com