当特定列达到给定值时分割熊猫帧

时间:2019-11-30 23:16:09

标签: python pandas dataframe

我想df.cut()使用两个不同的bin大小来表示数据帧的两个特定部分。我相信最简单的方法是读取我的数据帧并将其拆分为两个,以便我可以在具有两个独立容器的两个独立数据帧中使用df.cut()

我知道我可以使用df.head(),但是我必须不断更改数据框,而且它们的大小并不总是相同。例如,使用以下数据框

               A     B
          1    0.1   0.423655
          2    0.2   0.645894
          3    0.3   0.437587
          4    0.31  0.891773
          5    0.4   0.1773
          6    0.43  0.91773
          7    0.5   0.891773

我希望有两个数据帧,其A值大于或等于0.4且小于0.4。

所以我会有df2:

                 A     B
          1    0.1   0.423655
          2    0.2   0.645894
          3    0.3   0.437587
          4    0.31  0.891773

和df3:

                 A      B
           1    0.4   0.1773
           2    0.43  0.91773
           3    0.5   0.891773

同样,df.head(4)或df.tail(3)无法正常工作。

3 个答案:

答案 0 :(得分:3)

Files.writeString

答案 1 :(得分:1)

我添加了一些虚构数据作为示例:

data = {'A': [1,2,3,4,5,6,7,8], 'B': [5,8,9,10,11,12,13,14]}
df = pd.DataFrame(data)
df1 = df[df.A > 4]
df2 = df[df.A <13]

print(df1)
print(df2)

输出

>>> print(df1)
   A   B
4  5  11
5  6  12
6  7  13
7  8  14
>>> print(df2)
   A   B
0  1   5
1  2   8
2  3   9
3  4  10
4  5  11
5  6  12
6  7  13
7  8  14

答案 2 :(得分:1)

这应该有效:

import pandas as pd 
data = {'A': [0.1,0.2,0.1,0.2,5,6,7,8], 'B': [5,0.2,4,8,11,9,10,14]}
df = pd.DataFrame(data)

df2 = df[df.A >= 0.4]
print(df2) 

#    A     B
#4  5.0  11.0
#5  6.0   9.0
#6  7.0  10.0
#7  8.0  14.0

df3 = df[df.A < 0.4]
print(df3) 


#     A    B
#0  0.1  5.0
#1  0.2  0.2
#2  0.1  4.0
#3  0.2  8.0