Pandas根据单独数据框中的条件打印字符串

时间:2018-02-12 20:15:19

标签: python string pandas dataframe

我正在尝试根据数据中每一行的条件创建一个单独的字符串pandas数据帧。

我试着在pandas数据帧中编写一些数据:

from numpy.random import randint
import pandas as pd

# Create a df with a date-time index with data every 6 hours
rng = pd.date_range('1/5/2018 00:00', periods=5, freq='6H')
df = pd.DataFrame({'Random_Number':randint(1, 15, 5)}, index=rng)

df

我想在这个单独的pandas数据框列中做的是,如果数据点大于10,打印“太热”或者如果数据点小于5则打印'太酷'否则打印'恰到好处。 “因此,对于数据中的每一行,应在单独的数据帧中打印输出。

我知道这个功能不对,因为我不想看.any().all()

x = df

def OUTput(x):
    if df.any() > 10:
        print('Too hot.')
    elif df.any() < 5:
        print('Too cool.')
    else:
        print('Normal.')

OUTput(x)

我想到创建这个单独数据帧的唯一方法是df.apply(),但我不确定这是否是最佳实践。这只会给我一个错误, 系列的真值是模棱两可的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

df['PrintOut'] = df['Random_Number'].apply(OUTput(x))

df

1 个答案:

答案 0 :(得分:0)

当您在def SecondClick(self): if self.SecondPhoto is None: self.SecondPhoto = PhotoImage(file="ksiazka.png") self.SecondPhotoLabel = Label(root, image=self.FirstPhoto) self.SecondPhotoLabel.img = self.SecondPhoto self.SecondPhotoLabel.pack() Else: self.SecondPhotoLabel.config(image='newimage') self.SecondPhotoLabel.update() 上拨打apply时,这就是切片DataFrame列时的内容(例如:pandas.core.series.Series),那么该系列的每个值都是传递给你正在申请的职能。

试试这个:

df['Random_Number']

另请注意,我已大幅更改了def OUTput(x): if x > 10: return 'Too hot.' elif x < 5: return 'Too cool.' else: return 'Normal.' df['PrintOut'] = df['Random_Number'].apply(OUTput) df 功能。我将其更改为使用参数OUTput而不是全局x,而不是调用print(返回df)而是返回字符串,以便将其放入新的{{ 1}} DataFrame的列。

生成的DataFrame如下所示:

None