我有一個數據框從CSV文件中讀取,該文件包含一些包含列表的列。然而,它們最終成爲Pandas中的一個字符串,就像本例中的B列一樣。我想將此列轉換爲包含整數列表的新列。一些併發症。 1)原始列中有一些NaN值。這阻止了ast.literal_eval爲我工作。 2)如果可能的話,我希望所有結果列表的長度相同(該列中最長列表的長度),並用NAN填充。所以最終應該看起來像C列,其中每個元素都是一個整數列表。這跟我一樣近了。所以我有一個字符串列表,但不是整數,並沒有填充到最大長度。那麼,至少我是這麼認爲的! :-)將包含字符串和NAN的列轉換爲Pandas中的整數列表
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']
任何幫助將是非常讚賞,並會節省我很多的頭髮。
我認爲你必須遍歷列d所有列表以獲得最大的長度。那麼你可以像這樣擴展所有更短的列表: '''aList.extend(np.nan *(maxLen - len(aList)))''' –
謝謝恭唐! – Michael