将数据框的一列拆分为两个单独的列

Split a column of a dataframe into two separate columns

我想将数据框的一列拆分为两个单独的列。这是我的数据框的样子(只有前 3 行):

我想将 referenced_tweets 列分成两列:typeid,例如,对于第一行,type 列将是 replied_toid 的值将是 1253050942716551168.

这是我试过的方法:

df[['type', 'id']] = df['referenced_tweets'].str.split(',', n=1, expand=True)

但我收到错误:

ValueError: Columns must be the same length as key

(我想我得到这个错误是因为 referenced_tweets 列中的类型并不总是 replied_to(例如,它可以是 retweeted,因此,长度将是不同)

为什么不从字典中获取值并将其添加两个新列?

def unpack_column(df_series, key):
    """ Function that unpacks the key value of your column and skips NaN values """
    return [None if pd.isna(value) else value[0][key] for value in df_series]
    
    
df['type'] = unpack_column(df['referenced_tweets'], 'type')
df['id'] = unpack_column(df['referenced_tweets'], 'id')

或单行:

df[['type', 'id']] = df['referenced_tweets'].apply(lambda x: (x[0]['type'], x[0]['id']))