我将许多数据帧合并为更大的数据帧,
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)
我该怎么办呢?

我正在创建一个名为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 循环中生成的数据帧的追加/串联问题
有没有办法只获取列中特定项目的计数?
为了澄清,假设我使用:
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]会给巴西,但有没有办法通过关键的“巴西”来搜索它?
我有一个 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 函数,但这仅适用于整个字符串,不适用于我的子字符串。
对于推荐服务,我正在一组用户 - 项目交互上训练矩阵分解模型(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的初学者,我有一个大的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) 我使用以下代码通过指定每个列的类型来读取 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?
我想切这个数字列表:
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将字符串中的第一个字母大写,但有些字符串可能首先包含数字.具体来说,该文件可能如下所示:
"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)
有什么建议?:-)
我在ipython中遇到了以下代码:
oname = args and args or '_'
Run Code Online (Sandbox Code Playgroud)
那是什么意思?为什么不使用args or '_'?