【问题标题】:Copy Pandas DataFrame into multiple files by Value Range按值范围将 Pandas DataFrame 复制到多个文件中
【发布时间】:2020-12-10 00:07:34
【问题描述】:

我有一个 DataFrame,假设是 3000x3000,int 值从 0 到 10,我想将其分解为多个类别并保存到单独的文件中。

例如,类别应该是 0-3、4-5、5-10。

因此,我想获得 3 个相同形状的文件,但每个类别仅具有相关值,并且这些值应保持在原始位置。

起初我想为每个类别复制 df 并使用 replace 删除所有不相关的值,但听起来不对。

希望这不是很混乱。

df 示例:

    0   1   2   3   4   5   6   7   8   9
0   0   0   0   0   0   0   0   0   0   0
1   0   0   1   0   0   0   0   0   7   0
2   0   0   2   3   0   0   0   0   6   7
3   0   0   2   3   0   0   0   0   9   6
4   0   0   0   1   0   0   5   4   8   7
5   0   0   0   0   0   0   5   4   0   0
6   0   0   0   0   0   0   4   5   0   0
7   0   0   0   0   0   0   4   4   0   0
8   0   0   0   0   0   0   0   4   0   0
9   0   0   0   0   0   0   0   0   0   0

结果我想要 3 个数据框:

猫1:

    0   1   2   3   4   5   6   7   8   9
0   0   0   0   0   0   0   0   0   0   0
1   0   0   1   0   0   0   0   0   0   0
2   0   0   2   3   0   0   0   0   0   0
3   0   0   2   3   0   0   0   0   0   0
4   0   0   0   1   0   0   0   0   0   0
5   0   0   0   0   0   0   0   0   0   0
6   0   0   0   0   0   0   0   0   0   0
7   0   0   0   0   0   0   0   0   0   0
8   0   0   0   0   0   0   0   0   0   0
9   0   0   0   0   0   0   0   0   0   0

cat2:

    0   1   2   3   4   5   6   7   8   9
0   0   0   0   0   0   0   0   0   0   0
1   0   0   0   0   0   0   0   0   0   0
2   0   0   0   0   0   0   0   0   0   0
3   0   0   0   0   0   0   0   0   0   0
4   0   0   0   0   0   0   5   4   0   0
5   0   0   0   0   0   0   5   4   0   0
6   0   0   0   0   0   0   4   5   0   0
7   0   0   0   0   0   0   4   4   0   0
8   0   0   0   0   0   0   0   4   0   0
9   0   0   0   0   0   0   0   0   0   0

cat3:

    0   1   2   3   4   5   6   7   8   9
0   0   0   0   0   0   0   0   0   0   0
1   0   0   0   0   0   0   0   0   7   0
2   0   0   0   0   0   0   0   0   6   7
3   0   0   0   0   0   0   0   0   9   6
4   0   0   0   0   0   0   0   0   8   7
5   0   0   0   0   0   0   0   0   0   0
6   0   0   0   0   0   0   0   0   0   0
7   0   0   0   0   0   0   0   0   0   0
8   0   0   0   0   0   0   0   0   0   0
9   0   0   0   0   0   0   0   0   0   0

【问题讨论】:

  • 你能展示一个example_df和预期的输出吗
  • @Kenan,更新了问题

标签: python pandas dataframe data-analysis


【解决方案1】:

你想要where

df1 = df.where((df > 0) & (df <=3), 0)
   
   0  1  2  3  4  5  6  7  8  9
0  0  0  0  0  0  0  0  0  0  0
1  0  0  1  0  0  0  0  0  0  0
2  0  0  2  3  0  0  0  0  0  0
3  0  0  2  3  0  0  0  0  0  0
4  0  0  0  1  0  0  0  0  0  0
5  0  0  0  0  0  0  0  0  0  0
6  0  0  0  0  0  0  0  0  0  0
7  0  0  0  0  0  0  0  0  0  0
8  0  0  0  0  0  0  0  0  0  0
9  0  0  0  0  0  0  0  0  0  0

您可以为 df2 和 df3 编写类似的逻辑

【讨论】:

  • 谢谢!早上试试!
猜你喜欢
  • 1970-01-01
  • 2017-05-06
  • 1970-01-01
  • 2014-12-26
  • 1970-01-01
  • 2021-04-05
  • 2023-03-27
  • 2016-08-20
  • 2020-12-29
相关资源
最近更新 更多