相关疑难解决方法(0)

如何在R数据帧中用零替换NA值?

我有一个数据框,有些列有NA值.

如何NA用零替换这些值?

r missing-data dataframe na imputation

673
推荐指数
18
解决办法
112万
查看次数

Pandas使用什么规则来生成视图和副本?

我对Pandas在决定数据帧中的选择是原始数据帧的副本还是原始数据的视图时使用的规则感到困惑.

如果我有,例如,

df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9))
Run Code Online (Sandbox Code Playgroud)

我明白a query返回一个副本,就像这样

foo = df.query('2 < index <= 5')
foo.loc[:,'E'] = 40
Run Code Online (Sandbox Code Playgroud)

对原始数据帧没有影响df.我也理解标量或命名切片返回一个视图,以便分配给这些,例如

df.iloc[3] = 70
Run Code Online (Sandbox Code Playgroud)

要么

df.ix[1,'B':'E'] = 222
Run Code Online (Sandbox Code Playgroud)

会改变df.但是当谈到更复杂的案件时,我迷失了方向.例如,

df[df.C <= df.B]  = 7654321
Run Code Online (Sandbox Code Playgroud)

变化df,但是

df[df.C <= df.B].ix[:,'B':'E']
Run Code Online (Sandbox Code Playgroud)

才不是.

是否有一个简单的规则,熊猫正在使用,我只是缺少?在这些特定情况下发生了什么; 特别是,如何更改满足特定查询的数据帧中的所有值(或值的子集)(正如我在上一个示例中尝试做的那样)?


注意:这与此问题不同 ; 我已经阅读了文档,但没有得到它的启发.我还阅读了关于这个主题的"相关"问题,但我仍然缺少Pandas正在使用的简单规则,以及我如何应用它 - 例如 - 修改值(或值的子集)在满足特定查询的数据框中.

python indexing dataframe pandas chained-assignment

98
推荐指数
1
解决办法
3万
查看次数

如何用1替换数据帧的所有非NaN条目,用0替换所有NaN

我有一个71列和30597行的数据帧.我想用1替换所有非nan条目,用0替换nan值.

最初,我尝试对数据帧的每个值进行for循环,这花费了太多时间.

然后我使用了data_new = data.subtract(data),这意味着将数据帧的所有值减去它自己,这样我就可以使所有非空值为0.但是由于数据帧有多个字符串条目,所以发生错误.

python dataframe pandas

16
推荐指数
3
解决办法
2万
查看次数

调用resample后如何使用值0填充()?

要么我不理解文档或它已过时.

如果我跑

user[["DOC_ACC_DT", "USER_SIGNON_ID"]].groupby("DOC_ACC_DT").agg(["count"]).resample("1D").fillna(value=0, method="ffill")
Run Code Online (Sandbox Code Playgroud)

它得到了

TypeError: fillna() got an unexpected keyword argument 'value'
Run Code Online (Sandbox Code Playgroud)

如果我跑

.fillna(0)
Run Code Online (Sandbox Code Playgroud)

我明白了

ValueError: Invalid fill method. Expecting pad (ffill), backfill (bfill) or nearest. Got 0
Run Code Online (Sandbox Code Playgroud)

如果我然后设置

.fillna(0, method="ffill") 
Run Code Online (Sandbox Code Playgroud)

我明白了

TypeError: fillna() got multiple values for keyword argument 'method'
Run Code Online (Sandbox Code Playgroud)

所以唯一有效的是

.fillna("ffill")
Run Code Online (Sandbox Code Playgroud)

但当然这只是一个向前填补.但是,我想NaN用零替换.我在这做错了什么?

python pandas

12
推荐指数
2
解决办法
6381
查看次数

减去数据帧pandas时的NaNs

我有两个数据帧,只有一些重叠的索引和列.

old = pd.DataFrame(index = ['A', 'B', 'C'],
                   columns = ['k', 'l', 'm'],
                   data = abs(np.floor(np.random.rand(3, 3)*10)))

new = pd.DataFrame(index = ['A', 'B', 'C', 'D'],
                   columns = ['k', 'l', 'm', 'n'],
                   data = abs(np.floor(np.random.rand(4, 4)*10)))
Run Code Online (Sandbox Code Playgroud)

我想计算它们之间的差异并尝试过

delta = new - old
Run Code Online (Sandbox Code Playgroud)

这会给索引和列不匹配的大量NaN.我想将索引和列的abscence视为零,(old ['n','D'] = 0).旧的永远是新的子空间.

有任何想法吗?

编辑:我想我没有彻底解释它.我不想用零填充delta数据帧.我想把旧的缺失索引和列视为零.然后我会在delta ['n','D']中以delta而不是NaN获得值.

python subtraction dataframe pandas

11
推荐指数
1
解决办法
6734
查看次数

如何替换python中的NaN值

我的数据框中有一个NaN值列表,我想用空字符串替换 NaN 值。

到目前为止我已经尝试过,但不起作用:

df_conbid_N_1 = pd.read_csv("test-2019.csv",dtype=str, sep=';', encoding='utf-8')
df_conbid_N_1['Excep_Test'] = df_conbid_N_1['Excep_Test'].replace("NaN","")
Run Code Online (Sandbox Code Playgroud)

python missing-data dataframe pandas imputation

1
推荐指数
1
解决办法
1万
查看次数

将一个数据帧列除以另一列 - 除以零

我有一个数据框(dayData),有两列'first''average'. 我希望将“第一”除以“平均”来创建一个新列'second'

使用以下内容:

dayData["second"] = dayData["first"] / dayData["average"]
Run Code Online (Sandbox Code Playgroud)

然而,列中的“平均值”的值为 0 的可能性(因此,当我将两列相除时,我会得到“NaN”值)。我想用零替换“NaN”值。有没有快速的方法来做到这一点?

谢谢

python pandas

0
推荐指数
1
解决办法
2万
查看次数