pandas dataframe通过使用第一列的值创建新列和填充值
问题描述:
我有一个熊猫数据框df
,它只有一列col
。我想循环使用col
的值,并使用第一列col
的值添加列以填充值。例如,第一行是一个列表,其中有3个元素['text1','text2','text3']
。我想添加3列,并使用'text1'
,'text2'
和'text3'
填充值。pandas dataframe通过使用第一列的值创建新列和填充值
import pandas as pd
df=pd.DataFrame({'col':[['text1','text2','text3'],['mext1','mext2'],['cext1']]})
df
col
0 [text1, text2, text3]
1 [mext1, mext2]
2 [cext1]
我想是这样的:
col col_1 col_2 col_3
0 [text1, text2, text3] text1 text2 text3
1 [mext1, mext2] mext1 mext2 Nan
2 [cext1] cext1 Nan Nan
您的帮助将不胜感激。
答
DataFrame
构造函数的另一个解决方案,其中需要rename
列S和add_prefix
:
print (pd.DataFrame(df.col.values.tolist(), index=df.col)
.rename(columns = lambda x: x+1)
.add_prefix('col_')
.reset_index())
col col_1 col_2 col_3
0 [text1, text2, text3] text1 text2 text3
1 [mext1, mext2] mext1 mext2 None
2 [cext1] cext1 None None
解决方案,其中通过找到str.len
在col
柱max
长度列表:[[“文本1:
cols = df.col.str.len().max() + 1
print (cols)
4
print (pd.DataFrame(df.col.values.tolist(), index=df.col,columns = np.arange(1, cols))
.add_prefix('col_')
.reset_index())
col col_1 col_2 col_3
0 [text1, text2, text3] text1 text2 text3
1 [mext1, mext2] mext1 mext2 None
2 [cext1] cext1 None None
不用于'DF = pd.DataFrame({ 'COL' 工作”, '文本2', '文字3'],[ 'mext1', 'mext2'],[ 'cext1'],[ 'cext2']]})'。问题:'np.arange(1,df.shape [0] + 1)'。 –
感谢您指出。修复。 –