Pandas列表:如何设置项目的dtype

msm*_*azh 1 python pandas

我有一个数据框,其中包含多列包含列表,每行中列表的长度不同:

tweetid tweet_date    user_mentions       hashtags
00112   11-02-2014    []                  []
00113   11-02-2014    [00113]             [obama, trump]
00114   30-07-2015    [00114, 00115]      [hillary, trump, sanders]
00115   30-07-2015    []                  []
Run Code Online (Sandbox Code Playgroud)

数据帧是三个不同数据帧的连续,我不确定列表中的项是否具有相同的dtype.例如,在user_mentions列中,有时数据如下:

[00114, 00115]
Run Code Online (Sandbox Code Playgroud)

但有时是这样的:

['00114','00115'] 
Run Code Online (Sandbox Code Playgroud)

如何设置列表中项目的dtype?

d_k*_*etz 6

Pandas DataFrames并非真正设计为将列表作为行/列值,因此这就是您遇到困难的原因.你能做到的

python3.x:

df['user_mentions'].apply(lambda x: list(map(int, x)))
Run Code Online (Sandbox Code Playgroud)

python2.x:

df['user_mentions'].apply(lambda x: map(int, x))
Run Code Online (Sandbox Code Playgroud)

在python3中,当映射一个map对象时,你必须转换为list,在python2中这不会发生,所以你没有明确地将它称为列表.

在上面的lambda中,x是你的行list,你将值映射到int.