簡體   English   中英

Pandas Dataframe 元組列表到簡單列

[英]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.

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