我有以下数据框:
'B' 'C'
1/1/2017 'A'
BTC NaN 0.367392
ETH NaN 0.367392
XRP 0.164735 0.164735
LTC 0.100481 0.100481
1/2/2017 BTC NaN 0.315265
XRP NaN 0.315265
ETH NaN 0.315265
LTC 0.054204 0.054204
我想在NaN值之间平均重新分配(1-df['B'].groupby(level=0.sum())。列“C”是预期输出的示例。
这应该可以做到。您可以从这里和isnull()
从这里获得有关如何计算非nan值的更多信息。
不管您使用的答案是什么,始终捕捉列没有NaN值的情况。在这种情况下,两个答案都将导致除零错误。
import pandas as pd
import numpy as np
test = [np.NAN,np.NAN,np.NAN,np.NAN,0.123128,0.1238123]
df = pd.DataFrame({"B":test})
df["C"] = df["B"].copy()
df["C"][df["C"].isnull()] = (1-df["B"].dropna().sum())/(len(df["B"]) - df["B"].count())
print(df)
输出:
B C
0 NaN 0.188265
1 NaN 0.188265
2 NaN 0.188265
3 NaN 0.188265
4 0.123128 0.123128
5 0.123812 0.123812
您可以使用GroupBy.transform通过第一级的MultiIndex和,第二个计数的NaNs通过检查缺失的值通过Series.isna和/code>,分割和替换缺失的值:
print (df)
C D
A B
1/1/2017 BTC NaN 0.367392
ETH NaN 0.367392
XRP 0.164735 0.164735
LTC 0.100481 0.100481
1/2/2017 BTC NaN 0.315265
XRP NaN 0.315265
ETH NaN 0.315265
LTC 0.054204 0.054204
sum1 = 1 - df['C'].groupby(level=0).transform('sum')
len1 = df['C'].isna().groupby(level=0).transform('sum')
df['E'] = df['C'].fillna(sum1 / len1)
print (df)
C D E
A B
1/1/2017 BTC NaN 0.367392 0.367392
ETH NaN 0.367392 0.367392
XRP 0.164735 0.164735 0.164735
LTC 0.100481 0.100481 0.100481
1/2/2017 BTC NaN 0.315265 0.315265
XRP NaN 0.315265 0.315265
ETH NaN 0.315265 0.315265
LTC 0.054204 0.054204 0.054204
问题内容: 我正在尝试学习熊猫,但请对以下内容感到困惑。我想用行平均值替换NaN是一个数据框。因此,类似的东西应该可以工作,但是由于某种原因,它对我来说是失败的。我是否想念任何东西,我做错了什么?是因为其未执行; 但是这样的事情看起来很好 问题答案: 如评论所述,fillna的axis参数为NotImplemented。 注意:这在这里很重要,因为您不想用第n行平均值填写第n列。 现在,您需要遍历
问题内容: 我无法获得熊猫列的平均值或均值。有一个数据框。我在下面尝试的任何事情都没有给我该列的平均值 以下返回几个值,而不是一个: 这样: 问题答案: 如果您只想要列的均值,请选择列(这是一个系列),然后调用:
我不能得到熊猫的平均值或平均值。有一个数据框。下面我尝试的东西都没有给我列的平均值 以下内容返回多个值,而不是一个值: 这也是:
问题内容: 我很好奇为什么在熊猫中简单地串联两个数据框: 形状相同且都没有NaN值 如果加入,可能会导致很多NaN值。 如何解决此问题并防止引入NaN值? 试图像复制它 失败,例如,因为没有引入NaN值,所以效果很好。 问题答案: 我认为索引值不同存在问题,因此无法对齐get : 解决方案是如果不需要索引值:
我有一份CSV档案 我需要的行被重新排列的网站,即后的部分; 有可能使用熊猫吗?找到sting的存在并重新排列它,遍历所有行并对下一个字符串重复此操作?我浏览了和但无法找到解决方案。
我是新来的。任何帮助都将不胜感激 这是我的原始数据: 我想得到的是: 1创建一个新的列调用平均值,以计算每个提要的平均市值。 2求加权平均数。 这是我当前的代码,我得到NaN: 对于加权平均代码: 我得到了一个错误: AttributeError:“Series”对象没有属性“value”