从数据帧中随机删除每列中的单个值?

2024-06-06 09:32:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似的df

测向

    a          b       c            d            e         f
0  Banana    Orange   Lychee     Custardapples Jackfruit  Pineapple
1   Apple    Pear   Strawberry   Muskmelon    Apricot    Peach
2  Raspberry Cherry  Plum           Kiwi        Mango   Blackberry

我想从每列中随机删除一个值

例如:

        a          b       c            d            e         f
 0    Banana    Orange             Custardapples Jackfruit  
 1               Pear     Strawberry               Apricot    Peach
 2  Raspberry            Plum           Kiwi                Blackberry

Tags: dfraspberrybananapearpeachorangekiwipineapple
2条回答

您可以使用随机x, y坐标并将其设置为""

for i in range(df.shape[1]):
    df.iloc[np.random.randint(df.shape[0]), i] = ""

完整代码:

import pandas as pd
import numpy as np

df = pd.read_clipboard()
print(df)
           a       b           c              d          e           f
0     Banana  Orange      Lychee  Custardapples  Jackfruit   Pineapple
1      Apple    Pear  Strawberry      Muskmelon    Apricot       Peach
2  Raspberry  Cherry        Plum           Kiwi      Mango  Blackberry

所有列的for循环:

for i in range(df.shape[1]):
    df.iloc[np.random.randint(df.shape[0]), i] = ""
           a       b       c              d          e           f
0             Orange  Lychee  Custardapples  Jackfruit   Pineapple
1      Apple                      Muskmelon    Apricot            
2  Raspberry  Cherry    Plum                            Blackberry

pandas内置方法^{}n=1参数一起使用。我将值替换为NaN,因为这样更优雅:

for col in df.columns:
    df.loc[df[col].sample(n=1).index, col] = np.NaN

           a       b       c              d          e          f
0        NaN     NaN  Lychee  Custardapples  Jackfruit  Pineapple
1      Apple    Pear     NaN      Muskmelon    Apricot      Peach
2  Raspberry  Cherry    Plum            NaN        NaN        NaN

如果您确实想要空白,请将np.NaN替换为''

相关问题 更多 >