2017-05-11 15 views
3

いくつかの行の文字列と一部の行のリストを含む列を持つデータフレームがあります。どうすればリストを別々の列に分解できますか? これはパンダ分解列に文字列とリストが含まれています

>>> df2 = pd.DataFrame(["abc","[u'abc', u'xyz']"]) 
>>> df2 

        0 
0    abc 
1 [u'abc', u'xyz'] 

have-は何かということです私は

 0  1 
0 abc None 
1 abc xyz 

をthis-するために取得したいと思い、私はこのような何かを試してみましたが、あなたはできIT-

>>> for col, col_data in df2.iteritems(): 
... col_data = pd.get_dummies(pd.DataFrame(list(col_data)), prefix = col) 
... 
Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
    File "/remote/iims003/harpreet/anaconda2/lib/python2.7/site-packages/pandas/core/reshape.py", line 1095, in get_dummies 
    for (col, pre, sep) in zip(columns_to_encode, prefix, prefix_sep): 
TypeError: izip argument #2 must support iteration 

答えて

0

との問題がありますシリーズを返す申請書を使用してください:

In [11]: from ast import literal_eval 

In [12]: def to_series(s): 
    ...:  try: 
    ...:   return pd.Series(literal_eval(s)) # makes it an actual list 
    ...:  except ValueError: 
    ...:   return pd.Series([s]) 
    ...: 

In [13]: df2[0].apply(to_series) 
Out[13]: 
    0 1 
0 abc NaN 
1 abc xyz 
+1

コードをコピーして元のdf2'df2 = pd.DataFrame(["abc"、 "[u'abc '、u'xyz']"]))で使用していますが、あなたはあなたです。 – Moondra

+0

私はパンダバージョン0.19.2を使用しています – Harpreet

+0

@Harpreetを更新しました –

関連する問題