Pandas 根据其他列中的条件和值创建新列
Pandas Create New Column Based Off of Condition and Value in Other Column
我有如下数据集:
ID Type
1 a
2 a
3 b
4 b
5 c
我正在尝试创建列 URL,如图所示,方法是根据 "Type" 指定不同的 URL 并附加 "ID".
ID Type URL
1 a http://example.com/examplea/id=1
2 a http://example.com/examplea/id=2
3 b http://example.com/bbb/id=3
4 b http://example.com/bbb/id=4
5 c http://example.com/testc/id=5
我在代码中使用了类似这样的东西,但它并没有为该行提取 ID,而是附加了所有 Type = a 的 ID。
df.loc[df['Type'] == 'a', 'URL']= 'http://example.com/examplea/id='+str(df['ID'])
df.loc[df['Type'] == 'b', 'URL']= 'http://example.com/bbb/id='+str(df['ID'])
你应该稍微改变一下命令:
df.loc[df['Type'] == 'a', 'URL']= 'http://example.com/examplea/id='+df['ID'].astype(str)
df.loc[df['Type'] == 'b', 'URL']= 'http://example.com/bbb/id='+df['ID'].astype(str)
或者您可以这样使用 map
:
url_dict = {
'a':'http://example.com/examplea/id=',
'b':'http://example.com/bbb/id=',
'c':'http://example.com/testc/id='
}
df['URL'] = df['Type'].map(url_dict) + df['ID'].astype(str)
输出:
ID Type URL
0 1 a http://example.com/examplea/id=1
1 2 a http://example.com/examplea/id=2
2 3 b http://example.com/bbb/id=3
3 4 b http://example.com/bbb/id=4
4 5 c http://example.com/testc/id=5
我有如下数据集:
ID Type
1 a
2 a
3 b
4 b
5 c
我正在尝试创建列 URL,如图所示,方法是根据 "Type" 指定不同的 URL 并附加 "ID".
ID Type URL
1 a http://example.com/examplea/id=1
2 a http://example.com/examplea/id=2
3 b http://example.com/bbb/id=3
4 b http://example.com/bbb/id=4
5 c http://example.com/testc/id=5
我在代码中使用了类似这样的东西,但它并没有为该行提取 ID,而是附加了所有 Type = a 的 ID。
df.loc[df['Type'] == 'a', 'URL']= 'http://example.com/examplea/id='+str(df['ID'])
df.loc[df['Type'] == 'b', 'URL']= 'http://example.com/bbb/id='+str(df['ID'])
你应该稍微改变一下命令:
df.loc[df['Type'] == 'a', 'URL']= 'http://example.com/examplea/id='+df['ID'].astype(str)
df.loc[df['Type'] == 'b', 'URL']= 'http://example.com/bbb/id='+df['ID'].astype(str)
或者您可以这样使用 map
:
url_dict = {
'a':'http://example.com/examplea/id=',
'b':'http://example.com/bbb/id=',
'c':'http://example.com/testc/id='
}
df['URL'] = df['Type'].map(url_dict) + df['ID'].astype(str)
输出:
ID Type URL
0 1 a http://example.com/examplea/id=1
1 2 a http://example.com/examplea/id=2
2 3 b http://example.com/bbb/id=3
3 4 b http://example.com/bbb/id=4
4 5 c http://example.com/testc/id=5