我有一个我创建的熊猫df。 df的结构如下: -
A B C D
0 a b c NaN
2 x y z NaN
.
.
现在还有一个列表 list1 ,其中json是
之类的元素[{a:1,b:2},{c:1,d:2},....]
我想将列表中的元素添加到json pandas df中,以便我的df看起来像
A B C D
0 a b c {a:1,b:2}
2 x y z {c:1,d:2}
.
.
当我做的时候
df['D'].iloc[0] = list[0]
它没有给我一个名为error的索引。我在这做什么错?
答案 0 :(得分:2)
length
list1
与DataFrame
的长度相同的解决方案:
您首先需要使用与Series
相同的索引创建df
,然后分配到新列:
print (pd.Series(list1, index=df.index))
0 {'b': 2, 'a': 1}
2 {'d': 2, 'c': 1}
dtype: object
df['D'] = pd.Series(list1, index=df.index)
print (df)
A B C D
0 a b c {'b': 2, 'a': 1}
2 x y z {'d': 2, 'c': 1}
DataFrame.assign
的另一个解决方案:
df = df.assign(D=pd.Series(list1, index=df.index))
print (df)
A B C D
0 a b c {'b': 2, 'a': 1}
2 x y z {'d': 2, 'c': 1}
评论解决方案,谢谢Nickil Maveli:
df.loc[:, 'D'] = list1
或更好:
df['D'] = list1
print (df)
A B C D
0 a b c {'b': 2, 'a': 1}
2 x y z {'d': 2, 'c': 1}
如果长度不同,则有点复杂 - 需要按length
的{{1}}和df.index
的{{1}}按位置选择:
length
list1