Pandas DataFrame:从列内的列表创建列
Pandas DataFrame: create a column from a list inside a column
我有 pandas DataFrame 'test_df':
email my_list
email1@email1.com [1,9,3,5]
email2@email2.com [6,3,3,15]
email3@email3.com [7,7,2,5]
email4@email4.com [5,5,5,5]
我怎样才能拥有以下 DataFrame(取 'my_list' 的前 2 个元素):
email col1 col2
email1@email1.com 1 9
email2@email2.com 6 3
email3@email3.com 7 7
email4@email4.com 5 5
我试过了:
test_df['col1'] = test_df['my_list'][0]
test_df['col2'] = test_df['my_list'][1]
但是没用
我问了一个相关的问题 here,虽然我想做的不仅仅是将列表扩展成列,所以答案比您需要的更复杂。在你的情况下,你可以这样做:
# Using my own example data since it's a bit tough to copy-paste
# a printed table and have the lists show up as lists
df = pd.DataFrame({'email': ['email1@eg.com', 'email2@eg.com'],
'lists': [[1, 9, 3, 5], [6, 3, 3, 15]]})
df
Out[14]:
email lists
0 email1@eg.com [1, 9, 3, 5]
1 email2@eg.com [6, 3, 3, 15]
objs = [df, pd.DataFrame(df['lists'].tolist()).iloc[:, :2]]
pd.concat(objs, axis=1).drop('lists', axis=1)
Out[13]:
email 0 1
0 email1@eg.com 1 9
1 email2@eg.com 6 3
我有 pandas DataFrame 'test_df':
email my_list
email1@email1.com [1,9,3,5]
email2@email2.com [6,3,3,15]
email3@email3.com [7,7,2,5]
email4@email4.com [5,5,5,5]
我怎样才能拥有以下 DataFrame(取 'my_list' 的前 2 个元素):
email col1 col2
email1@email1.com 1 9
email2@email2.com 6 3
email3@email3.com 7 7
email4@email4.com 5 5
我试过了:
test_df['col1'] = test_df['my_list'][0]
test_df['col2'] = test_df['my_list'][1]
但是没用
我问了一个相关的问题 here,虽然我想做的不仅仅是将列表扩展成列,所以答案比您需要的更复杂。在你的情况下,你可以这样做:
# Using my own example data since it's a bit tough to copy-paste
# a printed table and have the lists show up as lists
df = pd.DataFrame({'email': ['email1@eg.com', 'email2@eg.com'],
'lists': [[1, 9, 3, 5], [6, 3, 3, 15]]})
df
Out[14]:
email lists
0 email1@eg.com [1, 9, 3, 5]
1 email2@eg.com [6, 3, 3, 15]
objs = [df, pd.DataFrame(df['lists'].tolist()).iloc[:, :2]]
pd.concat(objs, axis=1).drop('lists', axis=1)
Out[13]:
email 0 1
0 email1@eg.com 1 9
1 email2@eg.com 6 3