小编jpp*_*jpp的帖子

ValueError:对于orient ='columns',DataFrame索引必须是唯一的

我将许多数据帧合并为更大的数据帧,

pd.concat(dfs, axis=0)

然后我无法将其转储到json中

(Pdb) df.to_json()
*** ValueError: DataFrame index must be unique for orient='columns'.
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

python pandas

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

连接用循环生成的 Pandas DataFrames

我正在创建一个名为data_day的新DataFrame,其中包含新功能,用于从前一个 DataFrame df的日期时间戳推断出来的每一天。

我的新数据帧data_day是 30 个独立的,我需要在 unic 数据帧 (final_data_day) 的末尾连接/附加它们。

每天的 for 循环定义如下:

num_days=len(list_day)

#list_day= random.sample(list_day,num_days_to_simulate)
data_frame = pd.DataFrame()

for i, day in enumerate(list_day):

    print('*** ',day,' ***')

    data_day=df[df.day==day]
    .....................
    final_data_day = pd.concat()
Run Code Online (Sandbox Code Playgroud)

希望我很清楚。我的基本上是在非平凡的 for 循环中生成的数据帧的追加/串联问题

python loops append dataframe pandas

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

使用 Pandas value.counts() 获取一个值

有没有办法只获取列中特定项目的计数?

为了澄清,假设我使用:

countDat = df['country'].value_counts()
Run Code Online (Sandbox Code Playgroud)

然后我会得到类似的东西:

Australia  35
Brazil 32
USA 93
Run Code Online (Sandbox Code Playgroud)

... 等等

有没有办法只提取巴西的数量?我只需要从countDat.

我知道countDat[1]会给巴西,但有没有办法通过关键的“巴西”来搜索它?

python numpy dataframe pandas

10
推荐指数
1
解决办法
7562
查看次数

检查熊猫数据框中是否有多个子字符串

我有一个 Pandas 数据框,我想检查某个列的子字符串。目前我有 30 行这样的代码:

df['NAME'].str.upper().str.contains('LIMITED')) |
(df['NAME'].str.upper().str.contains('INC')) |
(df['NAME'].str.upper().str.contains('CORP')) 
Run Code Online (Sandbox Code Playgroud)

它们都与一个or条件相关联,如果其中任何一个为真,则名称是公司的名称而不是个人的名称。

但对我来说,这似乎不是很优雅。有没有办法检查熊猫字符串列中的“此列中的字符串是否包含以下列表中的任何子字符串” ['LIMITED', 'INC', 'CORP']。

我找到了 pandas.DataFrame.isin 函数,但这仅适用于整个字符串,不适用于我的子字符串。

python select substring pandas

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

使用MultiIndex附加pandas DataFrame,数据包含新标签,但保留旧MultiIndex的整数位置

基本情景

对于推荐服务,我正在一组用户 - 项目交互上训练矩阵分解模型(LightFM).为了使矩阵分解模型产生最佳结果,我需要将我的用户和项目ID映射到从0开始的连续范围的整数ID.

我在这个过程中使用了一个pandas DataFrame,我发现MultiIndex非常方便创建这个映射,如下所示:

ratings = [{'user_id': 1, 'item_id': 1, 'rating': 1.0},
           {'user_id': 1, 'item_id': 3, 'rating': 1.0},
           {'user_id': 3, 'item_id': 1, 'rating': 1.0},
           {'user_id': 3, 'item_id': 3, 'rating': 1.0}]

df = pd.DataFrame(ratings, columns=['user_id', 'item_id', 'rating'])
df = df.set_index(['user_id', 'item_id'])
df

Out:
                 rating
user_id item_id 
1       1        1.0
1       3        1.0
3       1        1.0
3       1        1.0
Run Code Online (Sandbox Code Playgroud)

然后允许我像这样获得连续的地图

df.index.labels[0]    # For users

Out:
FrozenNDArray([0, 0, 1, 1], dtype='int8')

df.index.labels[1]    # For items

Out:
FrozenNDArray([0, 1, 0, 1], dtype='int8') …
Run Code Online (Sandbox Code Playgroud)

python numpy recommendation-engine pandas categorical-data

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

如何在Pandas中创建新列,条件重复另一列的值?

我是Python的初学者,我有一个大的DataFrame看起来像这样:

import pandas as pd
df = pd.DataFrame({'Total': [10, 10, 10, 10, 10, 10, 10, 10, 10, 10], \
                    'Type': ['Child', 'Boy', 'Girl', 'Senior', '', '', '', '', '', ''], \
                    'Count': [4, 5, 1, 0, '', '', '', '', '', '']})
df[["Total", "Type", "Count"]]
df
Run Code Online (Sandbox Code Playgroud)

输出:

   Total    Type    Count
0   10     Child    4
1   10       Boy    5
2   10      Girl    1
3   10     Senior   0
4   10      
5   10      
6   10      
7   10      
8   10      
9   10      
Run Code Online (Sandbox Code Playgroud)

我希望有类似的东西:

    Total …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

read_csv 使用 dtypes 但列中有 na 值

我使用以下代码通过指定每个列的类型来读取 csv:

clean_pdf_type=pd.read_csv('table_updated.csv',usecols=col_names,dtype =col_types)
Run Code Online (Sandbox Code Playgroud)

但它有错误:

ValueError: Integer column has NA values in column 298 
Run Code Online (Sandbox Code Playgroud)

不确定如何跳过 NA?

python csv dataframe pandas

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

根据条件将列表切片到子列表中

我想切这个数字列表:

num_list = [97, 122, 99, 98, 111, 112, 113, 100, 102] 
Run Code Online (Sandbox Code Playgroud)

分为多个子列表.切片的条件是每个子列表中的数字应按递增顺序排列.

所以最终结果将如下所示:

 list_1 = [97, 122]
 list_2 = [99]
 list_3 = [98, 111, 112, 113]
 list_4 = [100, 102]
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?非常感谢

python list python-3.x

9
推荐指数
3
解决办法
1849
查看次数

如何将可能包含数字的字符串中的第一个字母大写

我想通读一个文件并使用Python将字符串中的第一个字母大写,但有些字符串可能首先包含数字.具体来说,该文件可能如下所示:

"hello world"
"11hello world"
"66645world hello"
Run Code Online (Sandbox Code Playgroud)

我希望这是:

"Hello world"
"11Hello world"
"66645World hello"
Run Code Online (Sandbox Code Playgroud)

我已尝试过以下内容,但只有在字母位于第一位置时才会大写.

with open('input.txt') as input, open("output.txt", "a") as output:
    for line in input:
        output.write(line[0:1].upper()+line[1:-1].lower()+"\n")
Run Code Online (Sandbox Code Playgroud)

有什么建议?:-)

python string capitalization

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

"a和a或b"的目的是什么?

我在ipython中遇到了以下代码:

oname = args and args or '_'
Run Code Online (Sandbox Code Playgroud)

那是什么意思?为什么不使用args or '_'?

python ternary-operator

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