创建两组数据框。

huangapple go评论75阅读模式
英文:

create two sets of a dataframe

问题

我想创建两组数据框,通过删除两行(忽略NA值)。这两行应存储在一个新数据框中,并从原始数据框中删除。然后提取下面的两行(无重叠)以及:

# 数据框
x	    y	    ID
39.54	116.39	ID1
38.27	117.26	ID2
28.27	119.55	ID3
27.34	119.43	ID4
NA	NA	ID5
30.17	109.28	ID6
9.083333333	39.08333333	ID7
NA	NA	ID8
NA	NA	ID9
NA	NA	ID10

### 第一组
# 训练
x	y	ID
28.27	119.55	ID3
27.34	119.43	ID4
NA	NA	ID5
30.17	109.28	ID6
9.083333333	39.08333333	ID7
NA	NA	ID8
NA	NA	ID9
NA	NA	ID10

# 验证
x	y	ID
39.54	116.39	ID1
38.27	117.26	ID2

### 第二组
# 训练
x	y	ID
39.54	116.39	ID1
38.27	117.26	ID2
NA	NA	ID5
30.17	109.28	ID6
9.083333333	39.08333333	ID7
NA	NA	ID8
NA	NA	ID9
NA	NA	ID10

# 验证
x	y	ID
28.27	119.55	ID3
27.34	119.43	ID4

### 第三组
# 训练
x	y	ID
39.54	116.39	ID1
38.27	117.26	ID2
28.27	119.55	ID3
27.34	119.43	ID4
NA	NA	ID5
NA	NA	ID8
NA	NA	ID9
NA	NA	ID10

# 验证
x	y	ID
30.17	109.28	ID6
9.083333333	39.08333333	ID7

如何分割数据框以始终提取两行?

英文:

I want to create two sets of a dataframe by removing two rows (ignoring the NA values). The two rows should be stored in a new dataframe and should be removed from the original dataframe. Then the next two rows (without overlap) and the on:

# Dataframe
x	    y	    ID
39.54	116.39	ID1
38.27	117.26	ID2
28.27	119.55	ID3
27.34	119.43	ID4
NA	NA	ID5
30.17	109.28	ID6
9.083333333	39.08333333	ID7
NA	NA	ID8
NA	NA	ID9
NA	NA	ID10

### First set
# Training
x	y	ID
28.27	119.55	ID3
27.34	119.43	ID4
NA	NA	ID5
30.17	109.28	ID6
9.083333333	39.08333333	ID7
NA	NA	ID8
NA	NA	ID9
NA	NA	ID10

#Validation
x	y	ID
39.54	116.39	ID1
38.27	117.26	ID2

### Second set
# Training
x	y	ID
39.54	116.39	ID1
38.27	117.26	ID2
NA	NA	ID5
30.17	109.28	ID6
9.083333333	39.08333333	ID7
NA	NA	ID8
NA	NA	ID9
NA	NA	ID10

#Validation
x	y	ID
28.27	119.55	ID3
27.34	119.43	ID4


### Third set
# Training
x	y	ID
39.54	116.39	ID1
38.27	117.26	ID2
28.27	119.55	ID3
27.34	119.43	ID4
NA	NA	ID5
NA	NA	ID8
NA	NA	ID9
NA	NA	ID10

#Validation
x	y	ID
30.17	109.28	ID6
9.083333333	39.08333333	ID7

How can I split the dataframes to extract always two rows?

答案1

得分: 2

使用DataFrame.dropna首先删除缺失值并提取index,然后按子索引循环并从原始DataFrame中删除train,并选择validation

# 如果需要,将字符串'NA'替换为NaN
df = df.replace('NA', np.nan)

idx = df.dropna(subset=['x','y']).index

for x in range(0, len(idx), 2):
    train = df.drop(idx[x:x+2])
    validation = df.loc[idx[x:x+2]]
    print (train)
    print (validation)

               x           y    ID
2  28.270000  119.550000   ID3
3  27.340000  119.430000   ID4
4        NaN         NaN   ID5
5  30.170000  109.280000   ID6
6   9.083333   39.083333   ID7
7        NaN         NaN   ID8
8        NaN         NaN   ID9
9        NaN         NaN  ID10
           x       y   ID
0  39.54  116.39  ID1
1  38.27  117.26  ID2

               x           y    ID
0  39.540000  116.390000   ID1
1  38.270000  117.260000   ID2
4        NaN         NaN   ID5
5  30.170000  109.280000   ID6
6   9.083333   39.083333   ID7
7        NaN         NaN   ID8
8        NaN         NaN   ID9
9        NaN         NaN  ID10
           x       y   ID
2  28.27  119.55  ID3
3  27.34  119.43  ID4

           x       y    ID
0  39.54  116.39   ID1
1  38.27  117.26   ID2
2  28.27  119.55   ID3
3  27.34  119.43   ID4
4    NaN     NaN   ID5
7    NaN     NaN   ID8
8    NaN     NaN   ID9
9    NaN     NaN  ID10
               x           y   ID
5  30.170000  109.280000  ID6
6   9.083333   39.083333  ID7

请注意,这是代码的翻译部分,没有其他内容。

英文:

Remove missing values byDataFrame.dropna first and extract index, then loop by subindices and remove from original DataFrame for train and select for validation:

#if necessary replace strings `NA` to `NaN`s
df = df.replace('NA', np.nan)

idx = df.dropna(subset=['x','y']).index

for x in range(0, len(idx), 2):
    train = df.drop(idx[x:x+2])
    validation = df.loc[idx[x:x+2]]
    print (train)
    print (validation)

           x           y    ID
2  28.270000  119.550000   ID3
3  27.340000  119.430000   ID4
4        NaN         NaN   ID5
5  30.170000  109.280000   ID6
6   9.083333   39.083333   ID7
7        NaN         NaN   ID8
8        NaN         NaN   ID9
9        NaN         NaN  ID10
       x       y   ID
0  39.54  116.39  ID1
1  38.27  117.26  ID2

           x           y    ID
0  39.540000  116.390000   ID1
1  38.270000  117.260000   ID2
4        NaN         NaN   ID5
5  30.170000  109.280000   ID6
6   9.083333   39.083333   ID7
7        NaN         NaN   ID8
8        NaN         NaN   ID9
9        NaN         NaN  ID10
       x       y   ID
2  28.27  119.55  ID3
3  27.34  119.43  ID4

       x       y    ID
0  39.54  116.39   ID1
1  38.27  117.26   ID2
2  28.27  119.55   ID3
3  27.34  119.43   ID4
4    NaN     NaN   ID5
7    NaN     NaN   ID8
8    NaN     NaN   ID9
9    NaN     NaN  ID10
           x           y   ID
5  30.170000  109.280000  ID6
6   9.083333   39.083333  ID7

huangapple
  • 本文由 发表于 2023年8月10日 13:51:04
  • 转载请务必保留本文链接:https://go.coder-hub.com/76872946.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定