如果列总和大于指定值,则将熊猫数据写入CSV文件

时间:2019-05-17 23:28:38

标签: pandas

我有一个CSV文件,其列是单词的频率计数,而行是时间段。我想为每一列求和。然后,我想写入总和大于或等于30的CSV文件,列和行值,因此删除总和小于30的列。

只需学习python和pandas。我知道这是一个简单的问题,但是我的知识才是这个水平。非常感谢您的帮助。

我可以读取CSV文件并计算列总和。

df = pd.read_csv('data.csv')

Except of data file containing 3,874 columns and 100 rows

df.sum(axis = 0, skipna = True)

Excerpt of sums for columns

我坚持如何创建输出文件,使其看起来像原始文件,但不再包含总和小于30的列。

我坚持如何将总和大于或等于30的每一列的每一行写入CSV文件。输出文件的布局将与输入文件的布局相同。总和将不包含在输出中。

非常感谢您的帮助。

因此,下面的链接显示了一个包含100行和3857列的文件的摘录:

1 个答案:

答案 0 :(得分:0)

最简单的两步操作:

1。将DataFrame过滤为仅要保存的列

df_to_save = df.loc[:, (df.sum(axis=0, skipna=True) >= 30)]

.loc用于根据标签或条件选择行/列;语法为.loc[rows, columns],所以:的意思是“占据所有行”,然后第二部分是我们列的条件-我已经采用了您在问题中给出的总和大于或等于30。

2。将过滤后的DataFrame保存为CSV

df_to_save.to_csv('path/to/write_file.csv', header=True, index=False)

只需将文件路径作为第一个参数即可。 header=True表示表中的标题标签将写回到文件中,index=False表示在CSV中读取时自动创建的带编号的熊猫标签行不会包含在导出中。


在此处查看此答案:How to delete a column in pandas dataframe based on a condition?。请注意,您的问题的解决方案在isnull()之前不需要sum(),因为这是他们的问题,用于计算NaN的值。