在我们的项目中,我们使用的是包含一些数据的CSV文件。我们称之为smal.csv这是一个有点笨重的文件,稍后将用于其他一些算法。(以下是链接到smal.csv文件对于您的浏览器来说,格式太差。)
文件将这样加载
filename = "smal.csv"
keyname = "someKeyname"
self.data[keyname] = spectral_data(pd.read_csv(filename, header=[0, 1], verbose=True))
光谱类是这样的。如您所见,我们实际上并没有保持数据帧的原样。你知道吗
class spectral_data(object):
def __init__(self, df):
try:
uppercols = df.columns.levels[0]
lowercols = list(df.columns.levels[1].values)
except:
df.columns = pd.MultiIndex.from_tuples(list(df.columns))
uppercols = df.columns.levels[0]
lowercols = list(df.columns.levels[1].values)
for i, val in enumerate(lowercols):
try:
lowercols[i] = float(val)
except:
lowercols[i] = val
levels = [uppercols, lowercols]
df.columns.set_levels(levels, inplace=True)
self.df = df
在我们加载它之后,我们想将它与另一组数据连接起来,也像smal.csv
那样加载。你知道吗
我们的连接是这样完成的。你知道吗
new_df = pd.concat([self.data[dataSet1].df, self.data[dataSet2].df], ignore_index=True)
但是,ignore_index=True
不起作用,因为我们连接的实际行不是索引。但是,我们不能简单地删除列,它是我们程序的其他部分所必需的。你知道吗
我正在尝试将两个数据帧连接在一起,但是,我认为索引实际上并不是数据帧的索引。因此命令
pd.concat([df1.df, df2.df], ignore_index=True)
不起作用。我想也许用iloc
来改变每一个单独的细胞会起作用,但我觉得这不是最直观的方法。你知道吗
我怎样才能得到这样的数据帧
[396 rows x 6207 columns]
Unnamed: 0_level_0 meta ... wvl
Unnamed: 0_level_1 Sample ... 932.695 932.89
0 1 NaN ... -12.33 9.67
1 2 NaN ... 11.94 3.94
2 3 NaN ... -2.67 28.33
3 4 NaN ... 53.22 -13.78
4 1 NaN ... 43.28
5 2 NaN ... 41.33 47.33
6 3 NaN ... -21.94 12.06
7 4 NaN ... -30.94 -1.94
8 5 NaN ... -24.78 40.22
变成这个。你知道吗
[396 rows x 6207 columns]
Unnamed: 0_level_0 meta ... wvl
Unnamed: 0_level_1 Sample ... 932.695 932.89
0 1 NaN ... -12.33 9.67
1 2 NaN ... 11.94 3.94
2 3 NaN ... -2.67 28.33
3 4 NaN ... 53.22 -13.78
4 5 NaN ... 43.28
5 6 NaN ... 41.33 47.33
6 7 NaN ... -21.94 12.06
7 8 NaN ... -30.94 -1.94
8 9 NaN ... -24.78 40.22
目前没有回答
相关问题 更多 >
编程相关推荐