我正在尝试将csv数据导入到pandas数据框中。为此,我正在执行以下操作:
center device count
1 d1 2
1 d2 2
1 d5 1
3 d5 1
3 d6 1
这会产生例如下表:
df = pd.read_csv(StringIO(contents), skiprows=4, delim_whitespace=True,index_col=False,header=None)
index = pd.MultiIndex.from_arrays((columns, units, descr))
df.columns = index
df.columns.names = ['Name','Unit','Description']
df = df.apply(pd.to_numeric)
data['isotherm'] = df
但是,如果我只想获取列In: data['isotherm']
Out:
Name Relative_Pressure Volume_STP
Unit - ccm/g
Description p/p0
0 0.042691 29.3601
1 0.078319 30.3071
2 0.129529 31.1643
3 0.183355 31.8513
4 0.233435 32.3972
5 0.280847 32.8724
的值,则会得到以下输出:
Relative_Pressure
当然我现在可以为要使用展平的每一列
In: data['isotherm']['Relative_Pressure'].values
Out:
array([[0.042691],
[0.078319],
[0.129529],
[0.183355],
[0.233435],
[0.280847]])
但是,这将导致很多额外的工作,并且还会降低可读性。我如何才能确保整个数据框架平坦?
答案 0 :(得分:3)
array([[...]])
不是列表列表,而是2D numpy数组。 (不过,我不确定为什么在这里将值作为单列2D数组而不是1D数组返回。创建原始DataFrame时,单列的值作为1D数组返回。)
您可以使用numpy的内置函数来将它们串联和展平。
x = data['isotherm']['Relative_Pressure'].flatten()
编辑:这可能是由MultiIndex引起的。
答案 1 :(得分:0)