[英]Pandas Dataframe column list of tuples to simple column
我有一個類似於此的 dataframe:
df = pd.DataFrame({'A':[[(1,2), (3,4)], [(5,6), (7,8), (9,10)]]})
我想轉換成這種格式:
df = pd.DataFrame({'a':[1,3,5,7,9], 'b':[2,4,6,8,10]})
所以基本上將所有元組 [0] 放入 A 列,將元組1放入 B 列
我發現這個 Stack Overflow 問題很有幫助: how to split column of tuples in pandas dataframe? 但我有一個元組列表,而不是列中的單個元組。
任何幫助,將不勝感激。 謝謝
使用Series.explode
將元組轉換為列表,然后傳遞給DataFrame
構造函數:
df = pd.DataFrame(df['A'].explode().tolist(), columns=['A','B'])
print (df)
A B
0 1 2
1 3 4
2 5 6
3 7 8
4 9 10
或者將列表理解與展平嵌套列表一起使用:
df = pd.DataFrame([y for x in df['A'] for y in x], columns=['A','B'])
print (df)
A B
0 1 2
1 3 4
2 5 6
3 7 8
4 9 10
編輯:如果添加新的空列表,兩種解決方案的工作方式不同:
df = pd.DataFrame({'A':[[(1,2), (3,4)], [(5,6), (7,8), (9,10)], []]})
df1 = pd.DataFrame(df['A'].explode().tolist(), columns=['A','B'])
print (df1)
A B
0 1.0 2.0
1 3.0 4.0
2 5.0 6.0
3 7.0 8.0
4 9.0 10.0
5 NaN NaN
df1 = pd.DataFrame([y for x in df['A'] for y in x], columns=['A','B'])
print (df1)
A B
0 1 2
1 3 4
2 5 6
3 7 8
4 9 10
你可以在這里使用numpy.vstack
。
df = pd.DataFrame(np.vstack(df["A"]), columns=["A", "B"])
# df
A B
0 1 2
1 3 4
2 5 6
3 7 8
4 9 10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.