python - 将列表值转换为 pandas 中的行

标签 python python-3.x pandas numpy-ndarray

我有数据帧,其中一列具有相同长度的 numpy.ndarray 值,

df[list][0]
Out[92]: 
array([0.        , 0.        , 0.        , ..., 0.29273096, 0.30691767,
       0.27531403])

我想将这些列表值转换为数据框并从 df.iloc[,1:len(list)] 填充为单列值

示例

   list     1         2         3     ...
0  [..]  0         0         0
1  [..]  0.570642  0.181552  0.794599
2  [..]  0.568440  0.501638  0.186635
3  [..]  0.679125  0.642817  0.697628
.
.

最佳答案

我认为需要将值转换为列表,然后调用DataFrame构造函数:

df = pd.DataFrame({'list':[np.array([1,2,3]), np.array([7,8,3]), np.array([3,7,0])]})
print (df)
        list
0  [1, 2, 3]
1  [7, 8, 3]
2  [3, 7, 0]

df = pd.DataFrame(df['list'].values.tolist(), index=df.index)
print (df)
   0  1  2
0  1  2  3
1  7  8  3
2  3  7  0

最后join原始df:

df = df.join(pd.DataFrame(df['list'].values.tolist(), index=df.index))
print (df)
        list  0  1  2
0  [1, 2, 3]  1  2  3
1  [7, 8, 3]  7  8  3
2  [3, 7, 0]  3  7  0

另一个较慢的解决方案是:

df = df.join(df['list'].apply(pd.Series))

性能:

该图是使用 perfplot 创建的:

pic

np.random.seed(57)

def apply(df):
    df = df.join(df['list'].apply(pd.Series))
    return df

def values(df):
    df = df.join(pd.DataFrame(df['list'].values.tolist(), index=df.index))
    return df

def make_df(n):
    df = pd.DataFrame({'list': np.random.randint(10, size=(n, 10)).tolist()})
    return df

perfplot.show(
    setup=make_df,
    kernels=[ apply, values],
    n_range=[2**k for k in range(2, 17)],
    logx=True,
    logy=True,
    equality_check=False,  # rows may appear in different order
    xlabel='len(df)')

关于python - 将列表值转换为 pandas 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51282642/

相关文章:

Python Pandas Concat 具有不同列和相同行的数据框列表

python-3.x - geckodriver 的 Google Colaboratory 中的 executable_path 是什么?

python - Pandas:使用 timedelta 合并两个数据帧

python - 将 Django 的 Python 2.7 升级到 3.x

python - 测试 ndb 实体是否已放入数据存储

python - 用于检查值是否在列表中的逻辑不适用于集合

python - 如何让我的程序在 .py 文件不在源位置的情况下移动文件

python - 使用 Pandas 作为中间人将多个 html 表导出到 Excel

python - Pandas 可以推断 DataFrame 名称吗?

python - 如何从 Python REST API 返回 JSON