将包含字符串和NAN的列转换为Pandas中的整数列表

时间:2016-06-28 05:31:49

标签: python string list pandas dataframe

我有一个从CSV文件中读取的数据框,其中包含一些包含列表的列。然而,它们最终成为Pandas中的字符串,如本例中的B列。我想将此列转换为包含整数列表的新列。一些并发症。 1)原始列中包含一些NaN值。这阻止了ast.literal_eval为我工作。 2)如果可能的话,我希望所有生成的列表长度相同(该列中最长列表的长度),用NAN填充。所以最后它应该看起来像C列,其中每个元素都是一个int列表。这跟我一样接近。所以我有一个字符串列表,但不是整数,并没有填充到最大长度。好吧,至少我认为它是这样的! : - )

import pandas as pd
import numpy as np
from IPython.display import display 

df = pd.DataFrame({'A' : (1,2,3), 'B': ('[0,1]',np.nan,'[0,1,2]'), \
     'C': ([0,1,np.nan],[np.nan,np.nan,np.nan],[0,1,2])})
df['D'] = df['B'].str.replace(']','').str.replace('[','').str.split('\W')
display("Starting point: ", df['B'][0])
display("What I want: ", df['C'][0])
display("What I have so far:  ", df['D'][0])

这是上面的输出:

Starting point: 
[0,1]
What I want: 
[0, 1, nan]
What I have so far:  
['0', '1']

非常感谢任何帮助,这将为我节省很多头发。

1 个答案:

答案 0 :(得分:1)

这应该完成它:

Goal forall x y, x > 0 -> 0 < x + y + y.
  intros x y H.
  generalize dependent (x + y + y).

(* results in this proof state: *)
  x, y : nat
  H : x > 0
  ============================
   forall n : nat, 0 < n