ソリューションlist1
のlength
はDataFrame
の長さと同じである場合:
あなたはdf
と同じインデックスを持つ最初のSeries
を作成し、新しい列に割り当てる必要があります。DataFrame.assign
と
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}
別の解決策:
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}
Sコメントをolution、あなたに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}
lenghtsが異なっている場合、それはもう少し複雑です - df.index
のlength
によって及びlist1
のlength
によって位置によって選択する必要が:
print (df)
A B C D
0 a b c NaN
2 x y z NaN
5 y e t NaN
list1 = [{'a':1,'b':2},{'c':1,'d':2}]
df['D'] = pd.Series(list1[:len(df.index)], index=df.index[:len(list1)])
print (df)
A B C D
0 a b c {'b': 2, 'a': 1}
2 x y z {'d': 2, 'c': 1}
5 y e t NaN
print (df)
A B C D
0 a b c NaN
2 x y z NaN
5 y e t NaN
list1 = [{'a':1,'b':2},{'c':1,'d':2}, {'a':1,'b':2},{'c':1,'d':2}]
df['D'] = pd.Series(list1[:len(df.index)], index=df.index[:len(list1)])
print (df)
A B C D
0 a b c {'b': 2, 'a': 1}
2 x y z {'d': 2, 'c': 1}
5 y e t {'b': 2, 'a': 1}
単純な 'loc'はここで十分ではありません - ' df.loc [:, 'D'] = L'? –