我正在尝试根据数据中每一行的条件创建一个单独的字符串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
答案 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