1

私は 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]

しかし、それは機能していません

4

1 に答える 1

3

ここで関連する質問をしましたが、リストを列に展開することを少し超えて、回答が必要なものよりも複雑になるようにしたかったのです。あなたの場合、次のことができます:

# 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
于 2015-01-12T05:25:03.513 に答える