我正在尝试在python中创建一个函数,该函数检查数据帧中的数据是否遵循特定结构 就我而言,我需要确保id列的结构类似于此ID0101-10
这是我的代码,但是它不起作用,我不断收到索引错误:
i = 0
for i in df["id"]:
if ('-' in df["id"]):
df["id"].iloc[i] = df["id"].iloc[i]
i += 1
else:
df.drop(df["id"].iloc[i])
i += 1
if you're curious about my data, its like this:
id name
ID0101-10 John
ID0101-11 Mary
8454 Test
MMMM MMMM
ID0101-01 Ben
MN87876 00.00
我正在尝试通过删除虚拟值来清理数据
编辑:我收到此错误 TypeError:无法使用非整数键按位置索引编制索引
感谢您的任何帮助
答案 0 :(得分:2)
如果我理解正确,则可以执行以下操作:
import pandas as pd
df = pd.DataFrame({'id':['ID0101-10', 'ID0101-11', '8454', 'MMMM', 'ID0101-01', 'MN87876'],
'name':['John', 'Mary', 'Test', 'MMMM', 'Ben', '00.00']})
result = df[df['id'].str.startswith('ID0101-')]
print(result)
输出:
id name
0 ID0101-10 John
1 ID0101-11 Mary
4 ID0101-01 Ben
作为一般规则,您几乎不需要循环访问熊猫数据帧,使用本地熊猫函数几乎总是更快。
对于更复杂的匹配,您可以使用正则表达式:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.match.html