嗨,我有一个这样的数据框:
ColA ColB
a 0
b 1
c 2
我想将list_a = [0,1]附加到列A == a和 将list_c = [0,1,2]附加到列A == c。 Final应该看起来像这样:
ColA ColB
a 0 0 1 Nan
b 1 Nan Nan Nan
c 2 0 1 2
我该怎么做?谢谢。
答案 0 :(得分:2)
您可以将lists
构造为DataFrame
和concat
:
(pd.concat([df.set_index('ColA'),
pd.DataFrame([list_a, list_c], index=['a', 'c'])],
axis=1).rename_axis('ColA').reset_index())
[出]
ColA ColB 0 1 2
0 a 0 0.0 1.0 NaN
1 b 1 NaN NaN NaN
2 c 2 0.0 1.0 2.0
或者按照@QuangHoang的建议,使用DataFrame.merge
:
df.merge(pd.DataFrame([list_a, list_c], index=['a', 'c']),
left_on='ColA',
right_index=True,
how='left')
答案 1 :(得分:0)
import pandas as pd
df = pd.DataFrame([['a',0],['b',1],['c',2]], columns= ['A','B'])
def compar_func(x):
if x == 'a':
return [0,1]
elif x == 'c':
return [0,1,2]
else:
return ''
df1= pd.DataFrame(df['A'].apply(compar_func).values.tolist())
pd.concat([df, df1], axis = 1)
#o/P
A B 0 1 2
0 a 0 0.0 1.0 NaN
1 b 1 NaN NaN NaN
2 c 2 0.0 1.0 2.0