如何在Pandas中将一个列扩展为多个列?

10

如题,我有一个 pandas 中的一列(系列),其中每行都是一个列表,例如 [0,1,2,3,4,5]。每个列表都有6个数字。我想将此列更改为6列,例如,[0,1,2,3,4,5] 将变成6列,其中 0 是第一列,1 是第二列,2 是第三列等等。我该怎么做?

4个回答

12

不如 @jezrael 的解决方案快,但是很优雅 :-)

applypd.Series

df.a.apply(pd.Series)

   0  1  2  3  4  5
0  0  1  2  3  4  5
1  0  1  2  3  4  5
或者
df.a.apply(pd.Series, index=list('abcdef'))

   a  b  c  d  e  f
0  0  1  2  3  4  5
1  0  1  2  3  4  5

2
大数据 - 它会非常慢 ;) - jezrael
@jezrael 是的,它会。 - piRSquared

7
你可以通过values将列表转换为numpy array,然后使用DataFrame构造函数:
df = pd.DataFrame({'a':[[0,1,2,3,4,5],[0,1,2,3,4,5]]})
print (df)
                    a
0  [0, 1, 2, 3, 4, 5]
1  [0, 1, 2, 3, 4, 5]

df1 = pd.DataFrame(df['a'].values.tolist())
print (df1)
   0  1  2  3  4  5
0  0  1  2  3  4  5
1  0  1  2  3  4  5

cols = list('abcdef')
df1 = pd.DataFrame(df['a'].values.tolist(), columns=cols)
print (df1)
   a  b  c  d  e  f
0  0  1  2  3  4  5
1  0  1  2  3  4  5

0
如果我理解你的问题正确,你正在寻找一个转置操作。
df = pd.DataFrame([1,2,3,4,5],columns='a')
# .T stands for transpose
print(df.T)

但是我有1000行数据,我想将每一行数据转换成6个单独的列。 - Liu Chong

0
import pandas as pd

# create a sample DataFrame with a column containing comma-separated values
df = pd.DataFrame({'Name': ['John,Doe', 'Jane,Smith', 'Bob,Jones']})

# split the values in the 'Name' column and create new columns for each element
df[['First Name', 'Last Name']] = df['Name'].str.split(',', expand=True)

# drop the original 'Name' column
df = df.drop('Name', axis=1)

# print the resulting DataFrame
print(df)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接