簡體   English   中英

將csv數據加載到pandas數據幀后如何添加MultiIndex?

[英]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 可能如下所示:

導入的csv數據

為了清楚起見,我現在想附加索引行添加到數據框如圖所示在這里

多索引數據框

但是在鏈接中,這些多個索引行是在創建 DataFrame 時生成的。 我想在列中添加例如用於unitdescr的行。

我怎么能這樣做?

您可以通過專門創建索引,然后將其分配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_tuplesfrom_product 您可以在文檔中閱讀有關多索引的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM