簡體   English   中英

從數據框中的字典行創建列是分配隨機值

[英]Creating columns from dictionary rows in dataframe is assigning random values

我有一個數據框,例如:

|   | a | b                |
|---|---|------------------|
| 0 | a | {'d': 1, 'e': 2} |
| 1 | b | {'d': 3, 'e': 4} |
| 2 | c | NaN              |
| 3 | d | {'f': 5}         |
| 4 | d | {'e':8,'f': 5}   |
| 5 | d | {'e':9,'f': 5}   |
| 6 | d | {'f': 7}         |

我正在使用df.join(pd.DataFrame.from_records(df['b'].mask(df.b.isna(), {}).tolist()))的以下代碼如何從字典創建列同一個數據框中的鍵? 並得到如下結果:

|   | a | b                | d | e | f |
|---|---|------------------|---|---|---|
| 0 | a | {'d': 1, 'e': 2} | 1 | 2 |nan|
| 1 | b | {'d': 3, 'e': 4} | 3 | 8 |nan|
| 2 | c | NaN              |nan|nan|nan|
| 3 | d | {'f': 5}         |nan|nan| 5 |
| 4 | d | {'e':8,'f': 5}   |nan| 4 | 5 |
| 5 | d | {'e':9,'f': 5}   |nan|nan| 5 |
| 6 | d | {'f': 7}         |nan|nan| 7 |

為什么e中的值是隨機分配的,而不是相鄰的行? 我該如何解決這個問題?

提前致謝!

原因應該是原始 DataFrame 沒有默認的RangeIndex ,因此在join之后錯誤地分配了新的DataFrame ,默認情況下具有默認索引。

您需要通過df.index設置索引值以正確對齊新的 DataFrame。

df.join(pd.DataFrame(df['b'].mask(df.b.isna(), {}).tolist(), index=df.index))

暫無
暫無

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

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