gpt4 book ai didi

python - 基于列表的 csv 对 pandas DataFrame 进行切片

转载 作者:行者123 更新时间:2023-11-30 23:25:38 26 4
gpt4 key购买 nike

我有一个以下格式的文本文件。

[1,2]
[3]
[4,5,6,7,10]

我有一个 pandas DataFrame 如下所示。

df = pd.DataFrame({'id' : [1,2,3,4,5,6,7],
'path' : ["p1,p2,p3,p4","p1,p2,p1","p1,p5,p5,p7","p1,p2,p3,p3","p1,p2","p1","p2,p3,p4"]})

输出:

   id         path
0 1 p1,p2,p3,p4
1 2 p1,p2,p1
2 3 p1,p5,p5,p7
3 4 p1,p2,p3,p3
4 5 p1,p2
5 6 p1
6 7 p2,p3,p4

我想根据文本文件对DataFrame进行切片。跟随有什么问题?它产生空的数据帧。

for line in lines:
print line
print df[df['id'].isin(line)]

但它与以下内容配合得很好。

for line in lines:
print df[df['id'].isin([1,2])]

最佳答案

line是一个字符串。 [1,2]是一个列表。要将字符串转换为列表,您可以使用 ast.literal_eval :

import ast
line = ast.literal_eval(line)
<小时/>
import ast
for line in lines:
print line
line = ast.literal_eval(line)
print df.loc[df['id'].isin(line)]
PS。虽然 df[boolean_mask]我认为有效 df.loc[boolean_mask]更好,因为它不需要读者知道 boolean_mask 中值的类型了解哪条路 df正在被子选择(按行或按列)。 df.loc更明确,也更快。

关于python - 基于列表的 csv 对 pandas DataFrame 进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22909412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com