python شرح تغيير قيم معينة في عدة أعمدة من البانداس DataFrame دفعة واحدة




pandas python شرح (2)

لنفترض أن لدي DataFrame التالي:

In [1]: df
Out[1]:
  apple banana cherry
0     0      3   good
1     1      4    bad
2     2      5   good

هذا يعمل كما هو متوقع:

In [2]: df['apple'][df.cherry == 'bad'] = np.nan
In [3]: df
Out[3]:
  apple banana cherry
0     0      3   good
1   NaN      4    bad
2     2      5   good

لكن هذا لا:

In [2]: df[['apple', 'banana']][df.cherry == 'bad'] = np.nan
In [3]: df
Out[3]:
  apple banana cherry
0     0      3   good
1     1      4    bad
2     2      5   good

لماذا ا؟ كيف يمكنني تحقيق تحويل كل من قيمتي "apple" و "banana" دون الحاجة إلى كتابة سطرين ، كما هو الحال في

In [2]: df['apple'][df.cherry == 'bad'] = np.nan
In [3]: df['banana'][df.cherry == 'bad'] = np.nan

إنه بسبب df[['apple', 'banana']][df.cherry == 'bad'] = np.nan لتعيين نسخة من DataFrame. جرب هذا:

df.ix[df.cherry == 'bad', ['apple', 'banana']] = np.nan

يجب عليك استخدام الموقع والقيام بذلك دون تسلسل :

In [11]: df.loc[df.cherry == 'bad', ['apple', 'banana']] = np.nan

In [12]: df
Out[12]: 
   apple  banana cherry
0      0       3   good
1    NaN     NaN    bad
2      2       5   good

راجع المستندات عند إعادة العرض مقابل نسخة ، إذا قمت بتسليم المهمة إلى النسخة (وتم التخلص منها) ولكن إذا قمت بذلك في موضع ما ، فإن الباندا تدرك بذكاء أنك تريد التعيين للأصل.





pandas