我有一个像这样的空df。
dfSummary=pd.DataFrame(columns=['Company Type' , 'Max_Val', 'Min_Val'] , dtype=str)
我有一个变量CompanyType,它可以有两个值,让我们说'公共'或者'私人'。我正在分析两种公司类型的数据,并希望用另一个变量值maxValue填写df,如果companyType =' private'和minVal如果companyType =' public'。 我创建了一个带有值的tempdf,并使用dfSummary进行连接。
tempdf=pd.DataFrame({'CompanyType':companyType, 'max Val': maxVal,'min Val': minVal }, index=[0])
dfSummary=pd.concat([dfSummary,tempdf])
我想用pythonic方式初始化temdf,使用' max Val'或者' min Val'基于公司类型。换句话说,当我创建tempdf时,我想要条件。请帮忙。
答案 0 :(得分:1)
col = [companyType] + ([maxValue, np.nan]
if companyType == 'public' else [np.nan, minValue])
df = pd.DataFrame([col], columns=['Company Type' , 'Max_Val', 'Min_Val'])
答案 1 :(得分:1)
IIUC
设置
dfSummary = pd.DataFrame(
[['public', 'a', 'b'],
['private', 'c', 'd'],
['public', 'e', 'f'],
['private', 'g', 'h'],
['privage', 'i', 'j']],
columns=['Company Type' , 'Max_Val', 'Min_Val'],
dtype=str
)
dfSummary
Company Type Max_Val Min_Val
0 public a b
1 private c d
2 public e f
3 private g h
4 privage i j
解决方案1
np.where
dfSummary.assign(
New=np.where(
dfSummary['Company Type'] == 'public',
dfSummary.Max_Val, dfSummary.Min_Val)
)
Company Type Max_Val Min_Val New
0 public a b a
1 private c d d
2 public e f e
3 private g h h
4 privage i j j
解决方案2
使用pd.Series.where
dfSummary.assign(
New=dfSummary.Max_Val.where(
dfSummary['Company Type'] == 'public',
dfSummary.Min_Val)
)
Company Type Max_Val Min_Val New
0 public a b a
1 private c d d
2 public e f e
3 private g h h
4 privage i j j