这个看似简单的练习却把我搞得晕头转向,我相信是一些简单的东西跳过了我的眼睛。
比方说,我有一个数据框架。
datas = pd.DataFrame({'age':[10,20,30],
'name':['John','Mark','Lisa']})
我现在想用'Mark'这个名字来子集数据框,所以我做了。
if (datas['name']=='Mark').any():
datas.loc[datas['name'] == 'Mark']
else:
print('no')
预期的结果是
age name
20 Mark
但我又找回了原来的数据框,请协助。
我看了几个帖子,但似乎都没有用。
帖子的例子我看了。检查字符串是否在pandas的数据框中。
我认为你需要赋值回原值 DataFrame
如果需要覆盖原件 DataFrame
由子集。
datas = datas.loc[datas['name'] == 'Mark']
或分配给新的变量,例如: df1
:
df1 = datas.loc[datas['name'] == 'Mark']
下一步如果数据进行刡处理,并将putput赋值给新变量,如 df1
要用 DataFrame.copy
为防止 SettingWithCopyWarning
:
df1 = datas.loc[datas['name'] == 'Mark'].copy()
如果您修改了 df1
后来你会发现,修改并没有传播回原始数据(df
),而潘达斯做警告。
你的意思是要打印子集吗?现在你的代码并没有改变任何东西。
if (datas['name']=='Mark').any():
print( datas.loc[datas['name'] == 'Mark'] )
else:
print('no')
你甚至可以在一行中改变你的数据集。
datas = datas[datas['name']=='Mark']