小编Chr*_*ins的帖子

大熊猫按列值排名

我有一个包含拍卖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)

rank dataframe pandas

23
推荐指数
1
解决办法
4万
查看次数

将Int64Index转换为Int

我正在迭代数据框(称为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)

有人能解释发生了什么并提供替代方案吗?

pandas

9
推荐指数
2
解决办法
1万
查看次数

SQL where in 子句使用 Pandas 数据框中的列

我有一个包含一列 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)

sql pandas

6
推荐指数
1
解决办法
4114
查看次数

如何根据列表有条件地更新 Pandas 中的 DataFrame 列

假设我有一个包含一列的数据框:

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)

python contains list dataframe pandas

5
推荐指数
1
解决办法
4584
查看次数

三引号内的 Python 参数

我有一个包含 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)

python mysql string string-interpolation

2
推荐指数
1
解决办法
3431
查看次数

标签 统计

pandas ×4

dataframe ×2

python ×2

contains ×1

list ×1

mysql ×1

rank ×1

sql ×1

string ×1

string-interpolation ×1