created:09-13-2021
views:219
0

在我的项目中需要利用pandas来读取一个小型的数据库(.csv),但这个数据库有一个问题:

比如数据总体分A、B两组:

  • A组有效的列数为5
  • B组有效列数为6

这两组数据需要分别选取,要如何实现呢?

asked 8 months, 1 week ago
user image wiki
添加评论
评论需要先登录哦o( ̄ε ̄*)
1

方法一:

分两个数据库(.csv)读取。

方法二:

找一列可以将A、B两组数据分开的列(没有就自己添加一列),然后以该列为基准选择数据。

比如:

        para      value1        value2          value3
0         A   ... -8.780000e-09 -4.970000e+02   NaN
1         A   ... -1.320000e-06  5.540000e+04   NaN
2         A   ... -6.280000e-11 -7.560000e+02   NaN
3         B   ...  0.000000e+00 -1.420000e+03    -6.750 
4         B   ...  3.330000e-09  1.120000e+03    10.700
5         B   ...  0.000000e+00  0.000000e+00     0.000
6         B   ...  1.160000e-07 -5.530000e+03   -62.200
7         B   ...  2.310000e-06 -8.810000e+04 -1090.000

可以根据para这一列来选:

df = df.loc[ df['para'] == 'A' ]
print(df)

B组数据则把上面的A换成B即可。

结果:

        para      value1        value2          value3
0         A   ... -8.780000e-09 -4.970000e+02   NaN
1         A   ... -1.320000e-06  5.540000e+04   NaN
2         A   ... -6.280000e-11 -7.560000e+02   NaN

这时候把多余的列删除掉就可以了。

另一种情况

如果,A和B是A1、A2、A3…B1、B2、B3这样的不同形式

也可以使用列表和isin()函数来进行选择

array = ['A1','A2','A3']
df = df.loc[ df['para'].isin(array) ]

结果应该是这样:

        para      value1        value2          value3
0         A1   ... -8.780000e-09 -4.970000e+02   NaN
1         A2   ... -1.320000e-06  5.540000e+04   NaN
2         A3   ... -6.280000e-11 -7.560000e+02   NaN
09-13-2021
添加评论
评论需要先登录哦o( ̄ε ̄*)
添加回答