我有一个包含拍卖ID和出价的数据框.数据框按拍卖ID(升序)和出价(降序)排序:
Auction_ID Bid_Price
123 9
123 7
123 6
123 2
124 3
124 2
124 1
125 1
Run Code Online (Sandbox Code Playgroud)
我想添加一个名为"Auction_Rank"的列,按照出价对拍卖ID进行排名:
Auction_ID Bid_Price Auction_Rank
123 9 1
123 7 2
123 6 3
123 2 4
124 3 1
124 2 2
124 1 3
125 1 1
Run Code Online (Sandbox Code Playgroud) 我正在迭代数据框(称为hdf)并逐行应用更改.hdf按group_id排序,并在某些条件上分配1到n的排名.
# Groupby function creates subset dataframes (a dataframe per distinct group_id).
grouped = hdf.groupby('group_id')
# Iterate through each subdataframe.
for name, group in grouped:
# This grabs the top index for each subdataframe
index1 = group[group['group_rank']==1].index
# If criteria1 == 0, flag all rows for removal
if(max(group['criteria1']) == 0):
for x in range(rank1, rank1 + max(group['group_rank'])):
hdf.loc[x,'remove_row'] = 1
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
TypeError: int() argument must be a string or a number, not 'Int64Index'
Run Code Online (Sandbox Code Playgroud)
当我尝试明确地转换rank1时,我得到相同的错误我得到了同样的错误:
rank1 = int(group[group['auction_rank']==1].index)
Run Code Online (Sandbox Code Playgroud)
有人能解释发生了什么并提供替代方案吗?
我有一个包含一列 ID 的 Pandas 数据框。我需要运行另一个 sql 查询,其“WHERE”子句由上述列中的所有 ID 指定。
前任:
df1 = DataFrame({'IDs' : [1,2,3,4,5,6]})
query = """ Select id, SUM(revenue) AS revenue WHERE id IN (***want df1['IDs'] here***) Group by 1"""
df2 = my_database.select_dataframe(query)
Run Code Online (Sandbox Code Playgroud) 假设我有一个包含一列的数据框:
df = pd.DataFrame(np.random.randint(0,9,size=(100, 1)), columns=['number'])
Run Code Online (Sandbox Code Playgroud)
我有两个列表,一个列表包含偶数,另一个包含奇数。
odd_numbers = [1,3,5,7,9]
even_numbers = [0,2,4,6,8]
Run Code Online (Sandbox Code Playgroud)
我想在数据帧上创建另一个系列,根据 df['number'] 中的值显示“偶数”或“奇数”
就像是:
df['odd_or_even'] = 'even' if df[number].isin(even_numbers)
df['odd_or_even'] = 'odd' if df[number].isin(odd_numbers)
Run Code Online (Sandbox Code Playgroud) 我有一个包含 sql 查询的 python 脚本。我在 sql 查询周围使用三引号来进行格式化。我想将从命令行填充的变量注入到查询中。我怎样才能在保留三重引号的同时做到这一点。有没有更好的方法来绕过三重引号?
前任:
AGE = raw_input("Enter your age: ")
vdf = vertica.select_dataframe("""
Select
col1
col2
coln
FROM
TableX
WHERE
col2 IN (21, 22, AGE)
Group BY 1
""")
Run Code Online (Sandbox Code Playgroud)