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