使用 pandas 从 csv 文件中获取列的前几个字符

我有一个包含一些数据的 csv 文件,这里我将放一些数据。

在此处输入图像描述

  • 我需要从“ID”列中获取前两个字符作为输出,其中 Quantity = 10 且最大值大于 40(我们可以从“最大值”列中的前两个字符中获取)

所以,输出应该是,

02
04

到目前为止,我已经尝试过这些解决方案,

代码:

var1 = data.loc[{data["Quantity"] == 10) & (data["Max value"].str[:2] == 40)]

var2 = (var1["ID"].str[:2])

print(var2)

输出:

Empty DataFrame
Columns: [ID, Quantity, Max value]
Index: []
  • 我认为这是因为列名包含空格字符所以,其他方法,

代码:

var1 = data.loc[(data.Quantity == 10) & (data.Max value.str[:2] > 40)].ID.str[:2]

var2 = (var1.ID.str[:2])

print(var2)

输出:

same output
  • 让我们更改列名,方法3,

代码:

data.rename(columns = {'Max value':'MaxValue'}, inplace = True)

var1 = data.loc[(data["Quantity"] == 10) & (data["Max value"].str[:2] > 40)]

var2 = (var1["ID"].str[:2])

print(var2)

输出:

Series([], Name: ID, dtype: object)
  • 数据存在,但没有显示任何内容,顺便说一下,我尝试了没有“.loc”的相同代码。
  • 有什么想法吗?
伊山诗书店

这可以完成工作:

df = pd.read_csv(***csv file path***)

df["Max value num"] = [int(max_val[:2]) for max_val in df["Max value"]]
desired_data = df[(df["Quantity"] == 10) & (df["Max value num"] >= 40)]
desired_data = [id[:2] for id in desired_data["ID"]]

这会将前 2 个字符存储在列表中。


如果你想把它们打印出来02 04,然后用这个,

df = pd.read_csv(***csv file path***)

df["Max value num"] = [int(max_val[:2]) for max_val in df["Max value"]]
desired_data = df[(df["Quantity"] == 10) & (df["Max value num"] >= 40)]

output = ""
for id in desired_data["ID"]:
  output += f"{id[:2]} "

output.strip(" ")

对于上面的两个代码,我添加了一个Max value num列,将值的数字部分存储在Max value.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章