我有一个df包含条件和值的数据框。
import pandas as pd
df=pd.DataFrame({'COND':['X','X','X','Y','Y','Y'], 'VALUE':[1,2,3,1,2,3]})
因此df看起来像:
COND VALUE
X 1
X 2
X 3
Y 1
Y 2
Y 3
我正在使用循环df根据进行子集化COND,并编写包含每个条件的值的单独文本文件
conditions = {'X','Y'}
for condition in conditions:
df2 = df[df['COND'].isin([condition])][['VALUE']]
df2.to_csv(condition + '_values.txt', header=False, index=False)
最终结果是两个文本文件:X_vals.txt 和 Y_vals.txt,它们都包含1 2 3. 到目前为止,一切都按预期进行。
我想df仅针对一个条件进一步进行子集化。例如,也许我想要条件 Y 中的所有值,但只需要条件 X 中 < 3 的值。在这种情况下, X_vals.txt 应包含1 2, Y_vals.txt 应包含1 2 3。我尝试用 IF 语句来实现:
conditions = {'X','Y'}
for condition in conditions:
if condition == 'X':
df = df[df['VALUE'] < 3]
df2 = df[df['COND'].isin([condition])][['VALUE']]
df2.to_csv(condition + '_values.txt', header=False, index=False)
这就是不一致的地方。上面的代码工作正常(即 X_vals.txt 包含1 2, 和 Y_vals.txt 1 2 3,按预期),但是当我使用if condition=='Y'而不是 时if condition=='X',它会中断,并且两个文本文件都只包含1 2.
换句话说,如果我conditions在 IF 语句中指定第一个元素,那么它会按预期工作,但是如果我指定第二个元素,那么它会中断并将 < 3 子集应用于两个条件中的值。
这是怎么回事?我该如何解决?
元芳怎么了
噜噜哒
叮当猫咪
PIPIONE
随时随地看视频慕课网APP
相关分类