Python 将数据帧列中的整数转换为列表
我有一个包含整数值列的pandas数据框,但我似乎不知道如何将列中的值放入列表中 那么比如说,Python 将数据帧列中的整数转换为列表,python,list,pandas,dataframe,Python,List,Pandas,Dataframe,我有一个包含整数值列的pandas数据框,但我似乎不知道如何将列中的值放入列表中 那么比如说, NUMBERS ------> NUMBERS 1 [1] 2 [2] 3 [3] 4 [4] 5 [5] 6 NaN 7 [7] 8 NaN
NUMBERS ------> NUMBERS
1 [1]
2 [2]
3 [3]
4 [4]
5 [5]
6 NaN
7 [7]
8 NaN
谢谢。这是一种方法
df['NUMBERS'] = df['NUMBERS'].apply(lambda x: [x])
但是,除非您有非常具体的原因,否则不鼓励这样做,因为您失去了熊猫
的矢量化优势
要控制值为np.nan
时的行为:
df = pd.DataFrame({'NUMBERS': list(range(1, 8))})
df['NUMBERS'] = df['NUMBERS'].apply(lambda x: [int(x)] if not pd.isnull(x) \
in (6, 8) else np.nan)
你也可以这样做:
大堆
df[“NUMBERS”].值。重塑(5,1)
,这将给您
array([[1],
[2],
[3],
[4],
[5]])
这将是一个数组,它将保持熊猫
的矢量化优势
名单
或者,要获取列表列表,您可以执行以下操作:
[[x]表示df[“数字”]]中的x
这将使:
[[1]、[2]、[3]、[4]、[5]]
列表的DF
正如@piRSquared所建议的,您可以:
df.assign(Numbers=df.Numbers.values.reformate(-1,1.tolist())
将返回另一个DF,每个值作为列表:
Numbers
0 [1]
1 [2]
2 [3]
3 [4]
4 [5]
numpy
解决方案
df['Num']=df.NUMBERS.values[:,None].tolist()
df
Out[322]:
NUMBERS Num
0 1 [1]
1 2 [2]
2 3 [3]
3 4 [4]
4 5 [5]
谢谢,我试试看。我对熊猫很陌生,所以这些矢量化的好处到底是什么,如果你不想深入的话,一个链接就足够了。另外,如何防止在使用apply时将“Nan”存储在列表中?@Blank在数据中包含此类边缘情况通常是一个好主意。因此,基本上,该列也有带有Nan值的空单元格,但我只希望列表中的整数,并排除Nan值。我正试图编辑主要问题,以包括这一点,但我不知道如何感谢你!,已成功编辑它。当我尝试更新的解决方案时,我遇到了以下错误---->ufunc“isnan”不支持输入类型,并且无法根据强制转换规则“安全”将输入安全强制为任何支持的类型。。。列的内容为object类型。这有关系吗?用
df.assign(Numbers=df.Numbers.values.reforme(-1,1.tolist())
Good suggestion@piRSquared,我没想到这个。这就是你的答案。我只是把它包起来,这样它就能产生OP要求的结果。我本来打算提供这个答案,但我认为这基本上就是你想要的。因此,我为您提供了使其工作的包装器。你值得表扬(-: