pandas dataframe使用第一列的值创建新列并填充值

2024-10-03 13:23:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas数据帧df,它只有一列col。我想循环col的值,并通过使用第一列col的值添加列来填充值。例如,第一行是一个列表,它有3个元素['text1','text2','text3']。我想添加3列,并使用'text1''text2''text3'填充值。在

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]

我想要这样:

^{pr2}$

感谢您的帮助。在


Tags: 数据import元素pandasdf列表ascol
2条回答

您可以通过将单个列中的值转换为它的list表示形式来构造一个新的dataframe。list的元素现在将成为单独的列实体。在

然后可以将它们与原始的DF按列连接(axis=1))。在

df_expand = pd.DataFrame(df['col'].tolist(), df.index)
df_expand.columns = df_expand.columns + 1
pd.concat([df['col'], df_expand.add_prefix('col_')], axis=1)

enter image description here

要使None表示为NaN,可以在最后一个语法的末尾添加.replace({None:np.NaN})。在

另一个带有DataFrame构造函数的解决方案,其中需要rename列和{a1}:

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

通过^{}查找^{}列中列表的^{}长度的解决方案:

^{pr2}$

相关问题 更多 >