【发布时间】:2018-07-22 20:54:46
【问题描述】:
我有一个这样的多索引熊猫数据框:
lst = [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10), (11, 12), (13, 14), (21, 22)]
df = pd.DataFrame(lst, pd.MultiIndex.from_product([['A', 'B'], ['1','2', '3', '4']])).loc[:('B', '2')]
df["tuple"] = list(zip(df[0], df[1]))
#df:
0 1 tuple
A 1 1 2 (1, 2)
2 3 4 (3, 4)
3 5 6 (5, 6)
4 7 8 (7, 8)
B 1 9 10 (9, 10)
2 11 12 (11, 12)
我想将包含元组的列转换为元组列表。我的做法是:
#dataframe to append list of tuples
new_df = pd.DataFrame([1, 2], index = list("AB") )
#voila a list of tuples
new_df["list_of_tuples"] = df["tuple"].unstack(level = -1).values.tolist()
#new_df:
0 list_of_tuples
A 1 [(1, 2), (3, 4), (5, 6), (7, 8)]
B 2 [(9, 10), (11, 12), None, None]
这有效,但仅适用于每个条目长度相等的多索引数据帧。如果所有条目的长度不同,则缺少的列会在列表中产生None 值。我尝试在创建列表之前删除 numpy NaN 值,但失败了。有没有办法防止None 在最终的元组列表中出现?
【问题讨论】:
标签: python python-3.x pandas multi-index