用pandas访问CSV文件中方括号内的数字?

2024-05-29 06:00:31 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有这样的档案。在

data

如何访问“帮助”列中的数字?我需要单独的号码。最好是我可以将它们存储在helpful_1helpful_2列中。在

我可以做这样的事。在

enter image description here

但说实话,我真的不喜欢这样。我也不认为这是最好的做法。顺便说一下,这个文件相当大(~2GB),所以这可能不是最好的方法。也许有更好的方法来访问这个数据帧?有什么想法吗?在

我还想知道CSV中的方括号是什么意思。它们是某种单子吗?还是什么意思都没有?在

谢谢。在

更新:我已经回答了下面的问题。但我仍然愿意接受一些新的建议,因为我对自己的解决办法并不完全确定。如果有一个更优雅和高效的解决方案,我真的很想知道。同时,感谢所有发表评论/回答的人,感谢每一个帮助。在


Tags: 文件csv数据方法评论数字档案解决方案
3条回答

编辑以处理字符串:

df_out = df.assign(**df.helpful.apply(lambda x: pd.Series(eval(x))).rename(columns={0:'helpful_1',1:'helpful_2'}))

你可以这样做:

^{pr2}$

输出:

   helpful  number  helpful_1  helpful_2
0   [0, 1]       1          0          1
1   [0, 3]       2          0          3
2   [5, 6]       3          5          6
3  [8, 10]       4          8         10
4   [2, 5]       5          2          5

经过一段时间的阅读,我终于做到了以下几点。在

df['helpful_1'], df['helpful_2'] = df['helpful'].str.strip('[]').str.split(',', 1)

基本上,我先去掉方括号,然后用逗号将其分开,然后将它们存储到两个单独的列中。在

然后因为我需要的是int而不是string,所以我用这种方式转换了它们。在

^{pr2}$

但我并不完全满意,也许有更好的解决办法,但这就是目前所有的办法。我确实认为我的代码还有改进的余地。如果你能想出一个更优雅更高效的方法,请告诉我。我愿意接受所有新的建议。在

我认为您的解决方案非常好,也许有一点改进是可能的-将参数expand=True添加到^{}中,作为DataFrame输出,并转换为int两列一起:

df[['helpful_1', 'helpful_2']] = df['helpful'].str.strip('[]')
                                              .str.split(',', expand=True)
                                              .astype(int)
print (df)
  helpful  number  helpful_1  helpful_2
0   [0,1]       1          0          1
1   [0,3]       2          0          3
2   [5,6]       3          5          6
3  [8,10]       4          8         10
4   [2,5]       5          2          5

相关问题 更多 >

    热门问题