我有一个像这样的列表:
{291840: ['http://www.rollanet.org', 'http://www.rollanet.org'],
291841: ['http://www.superpages.com', 'http://www.superpages.com],
291848: ['http://www.drscore.com/App/ScoreDr', 'http://www.drscore.com'],...etc }
我想将其转换为两列数据框,一个用于subj_id
,另一个用于相应列表。每行都是dict的一个键,列是使用from_dict
的值(列表),其中orient设置为index。根据文档:" orient:如果键应该是行,则传递'index'。"
names = ['subj_id', 'URLs']
dfDict = pd.DataFrame(columns = names)
dfDict.from_dict(listDict, orient = 'index')
相反,我得到一个数据框,其中列表的每个元素都作为列。我只想要两列。一个用于subj_ID
,另一个用于与subj_ID
相关联的网址列表。
答案 0 :(得分:5)
我认为你需要:
listDict = {291840: ['http://www.rollanet.org', 'http://www.rollanet.org'],
291841: ['http://www.superpages.com', 'http://www.superpages.com'],
291848: ['http://www.drscore.com/App/ScoreDr', 'http://www.drscore.com']}
names = ['subj_id', 'URLs']
df = pd.DataFrame(listDict).stack().reset_index(drop=True, level=0).reset_index()
df.columns = names
print (df)
subj_id URLs
0 291840 http://www.rollanet.org
1 291841 http://www.superpages.com
2 291848 http://www.drscore.com/App/ScoreDr
3 291840 http://www.rollanet.org
4 291841 http://www.superpages.com
5 291848 http://www.drscore.com
旧答案:
df = pd.DataFrame.from_dict(listDict, orient='index').stack().reset_index(drop=True, level=1)
如果列URLs
中的需求列表使用list comprehensions
:
df = pd.DataFrame({'subj_id': pd.Series([k for k,v in listDict.items()]),
'URLs': pd.Series([v for k,v in listDict.items()])}, columns = names)
print (df)
subj_id URLs
0 291840 [http://www.rollanet.org, http://www.rollanet....
1 291841 [http://www.superpages.com, http://www.superpa...
2 291848 [http://www.drscore.com/App/ScoreDr, http://ww...
答案 1 :(得分:4)
因为我来不及给予jezrael的答案,所以这是一个有趣的方法:
if (aktifmi == "0")
{
cmd = new SqlCommand("select * from dh where person_id=" + person_id + ";");
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
int ds= (int)cmd.ExecuteScalar();
if (ds!= 0)
{
this.RegisterStartupScript("DisplayError","<script language=javascript>alert('ERROR');</script>");
}
}