当前位置: 首页 > 面试题库 >

如何从数据框中删除空格/ NA,并将值上移

公西俊德
2023-03-14
问题内容

我有一个巨大的数据框,里面有值和空白/ NA。我想从数据框中删除空格,并在列中向上移动下一个值。考虑下面的示例数据框。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,4))
df.iloc[1,2] = np.NaN
df.iloc[0,1] = np.NaN
df.iloc[2,1] = np.NaN
df.iloc[2,0] = np.NaN
df

       0           1           2         3
0   1.857476      NaN      -0.462941   -0.600606
1   0.000267   -0.540645    NaN        0.492480
2   NaN           NaN      -0.803889   0.527973
3   0.566922    0.036393   -1.584926   2.278294
4   -0.243182   -0.221294   1.403478   1.574097

我希望我的输出如下

       0             1             2           3
0   1.857476    -0.540645     -0.462941   -0.600606
1   0.000267     0.036393     -0.803889    0.492480
2   0.566922    -0.221294     -1.584926    0.527973
3   -0.243182                  1.403478    2.278294
4                                          1.574097

我希望删除NaN,然后​​将下一个值上移。df.shift没有帮助。我尝试了多个循环和if语句,并获得了预期的结果,但是还有什么更好的方法可以完成它。


问题答案:

你可以用applydropna

np.random.seed(100)
df = pd.DataFrame(np.random.randn(5,4))
df.iloc[1,2] = np.NaN
df.iloc[0,1] = np.NaN
df.iloc[2,1] = np.NaN
df.iloc[2,0] = np.NaN
print (df)
          0         1         2         3
0 -1.749765       NaN  1.153036 -0.252436
1  0.981321  0.514219       NaN -1.070043
2       NaN       NaN -0.458027  0.435163
3 -0.583595  0.816847  0.672721 -0.104411
4 -0.531280  1.029733 -0.438136 -1.118318

df1 = df.apply(lambda x: pd.Series(x.dropna().values))
print (df1)
          0         1         2         3
0 -1.749765  0.514219  1.153036 -0.252436
1  0.981321  0.816847 -0.458027 -1.070043
2 -0.583595  1.029733  0.672721  0.435163
3 -0.531280       NaN -0.438136 -0.104411
4       NaN       NaN       NaN -1.118318

然后,如果需要替换为空白空间,则创建混合值(带数字的字符串)的某些函数可能会被破坏:

df1 = df.apply(lambda x: pd.Series(x.dropna().values)).fillna('')
print (df1)
          0         1         2         3
0  -1.74977  0.514219   1.15304 -0.252436
1  0.981321  0.816847 -0.458027 -1.070043
2 -0.583595   1.02973  0.672721  0.435163
3  -0.53128           -0.438136 -0.104411
4                               -1.118318


 类似资料:
  • 本文向大家介绍如何从R数据框中删除空行?,包括了如何从R数据框中删除空行?的使用技巧和注意事项,需要的朋友参考一下 在调查或任何其他数据收集媒介期间,无法从所有单位获取所有信息。有时我们得到部分信息,有时什么也没有。因此,数据中的某些行可能完全为空白,而某些行可能具有部分数据。可以删除空白行,并使用有助于处理缺失信息的方法填充其他空值。 示例 考虑下面的数据框,它缺少一些行和一些值- 在这里,我们

  • 本文向大家介绍如何在R数据帧中将空值转换为NA?,包括了如何在R数据帧中将空值转换为NA?的使用技巧和注意事项,需要的朋友参考一下 当我们的数据包含空值时,很难执行分析,我们可能会将这些空值转换为NA,以便我们了解不可用的值的数量。这可以通过使用单个方括号来完成。 示例 请看以下具有一些空值的数据框- 将空值转换为NA-

  • 我使用XMLOutputter类将文档对象的内容写入xml文件。 但我面临以下问题:当我删除任何子节点时,它会在文档对象中创建空行,并且在将其内容保存到xml文件时,它也会在xml文件中显示空行。 所以这意味着如果我执行10次删除操作并保存其内容,那么xml文件中将有10行空行。 我浏览了以下链接。这些链接建议使用以下api: http://www.jdom.org/pipermail/jdom-

  • 问题内容: 我正在从Excel文件中解析数据,该文件在某些​​列标题中具有额外的空白。 当我使用来检查结果数据框的列时,我看到: 因此,我无法执行以下操作: 因为它会告诉我找不到列,因为我要求输入“ Month”而不是“ Month”。 那么,我的问题是如何从列标题中去除不需要的空白? 问题答案: 您可以为该方法提供功能。该方法应做您想要的。 注意 :这将返回一个对象,并在屏幕上显示为输出,但是更

  • 可能的重复项: 删除数据中具有NAs(缺少值)的行。框架 如何删除具有NA值的“行”? 我有一个嵌套的数据框,大约有400个文件,大约65k行。我想从嵌套数据框df中删除所有带有NA的行。我尝试了,但似乎不起作用。我不确定我是否遗漏了什么。谢谢 我的最终数据应该是这样的。

  • 我有一个名为“mydata”的数据框,看起来像这样: 我想删除第2、4、6行。例如,像这样: