[英]How to add a MultiIndex after loading csv data into a pandas dataframe?
在将 csv 数据加载到现有的熊猫数据帧后,我试图将其他索引行添加到其中。
所以假设我像这样加载我的数据:
columns = ['Relative_Pressure','Volume_STP']
df = pd.read_csv(StringIO(contents), skiprows=4, delim_whitespace=True,index_col=False,header=None)
df.columns = columns
其中contents
是 csv 格式的字符串。 生成的 DataFrame 可能如下所示:
为了清楚起见,我现在想附加索引行添加到数据框如图所示在这里:
但是在链接中,这些多个索引行是在创建 DataFrame 时生成的。 我想在列中添加例如用于unit
或descr
的行。
我怎么能这样做?
您可以通过专门创建索引,然后将其分配MultiIndex
读取数据分开的列来在列上创建MultiIndex
。
我将使用您提供的链接中的示例。 第一种方法是在制作数据框时创建 MultiIndex:
df = pd.DataFrame({('A',1,'desc A'):[1,2,3],('B',2,'desc B'):[4,5,6]})
df.columns.names=['NAME','LENGTH','DESCRIPTION']
df
NAME A B
LENGTH 1 2
DESCRIPTION desc A desc B
0 1 4
1 2 5
2 3 6
如前所述,这不是您所追求的。 相反,您可以制作数据框(例如从您的文件),然后从一组列表制作MultiIndex
,然后将其分配给列:
df = pd.DataFrame({'desc A':[1,2,3], 'desc B':[4,5,6]})
# Output
desc A desc B
0 1 4
1 2 5
2 3 6
# Create a multiindex from lists
index = pd.MultiIndex.from_arrays((['A', 'B'], [1, 2], ['desc A', 'desc B']))
# Assign to the columns
df.columns = index
# Output
A B
1 2
desc A desc B
0 1 4
1 2 5
2 3 6
# Name the columns
df.columns.names = ['NAME','LENGTH','DESCRIPTION']
# Output
NAME A B
LENGTH 1 2
DESCRIPTION desc A desc B
0 1 4
1 2 5
2 3 6
还有其他方法可以构造MultiIndex
,例如from_tuples
和from_product
。 您可以在文档中阅读有关多索引的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.