我有以下数据帧:
fsq digits digits_type
0 1 1 odd
1 2 1 odd
2 3 1 odd
3 11 2 even
4 22 2 even
5 101 3 odd
6 111 3 odd
Run Code Online (Sandbox Code Playgroud)
我想添加一个最后一列,count包含属于数字组的fsq 数,即:
fsq digits digits_type count
0 1 1 odd 3
1 2 1 odd 3
2 3 1 odd 3
3 11 2 even 2
4 22 2 even 2
5 101 3 odd 2
6 111 3 odd 2
Run Code Online (Sandbox Code Playgroud)
由于有3个 …
我有一个Pandas DataFrame,其中包含列表对象的列
A
0 [1,2]
1 [3,4]
2 [8,9]
3 [2,6]
Run Code Online (Sandbox Code Playgroud)
如何访问每个列表的第一个元素并将其保存到DataFrame的新列中?要得到这样的结果:
A new_col
0 [1,2] 1
1 [3,4] 3
2 [8,9] 8
3 [2,6] 2
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过遍历每一行来完成,但是有任何"pythonic"方式吗?
我有一个名为checker(nums)的函数,它有一个参数,稍后会收到一个列表.我想对该列表做的是检查每个其他元素是否大于或等于前一个元素.示例:我有一个列表[1, 1, 2, 2, 3],我必须检查它是否满足条件.既然如此,函数应该返回True
我的代码:
def checker(nums):
for x in range(len(nums)):
if x+1<len(nums):
if nums[x] <= nums[x+1] and nums[-1] >= nums[-2]:
return True
Run Code Online (Sandbox Code Playgroud)
这将只运行一次,如果第一个条件为真,则返回True.我已经看过一个声明,如果所有并且不确定如何使用它.
对于python dict,我可以使用iteritems()同时循环键和值.但我找不到NumPy阵列的这种功能.我必须idx像这样手动跟踪:
idx = 0
for j in theta:
some_function(idx,j,theta)
idx += 1
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
给定的数据框结构如下:
rule_id | ordering | sequence_id
1 | 0 | 12
1 | 1 | 13
1 | 1 | 14
2 | 0 | 1
2 | 1 | 2
2 | 2 | 12
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为:
rule_id | sequences
1 | [[12],[13,14]]
2 | [[1],[2],[12]]
Run Code Online (Sandbox Code Playgroud)
这似乎很容易组成groupby到列表操作 - 但我不能让它在熊猫中工作.
df.groupby(['rule_id', 'ordering'])['sequence_id'].apply(list)
Run Code Online (Sandbox Code Playgroud)
离开我
rule_id ordering
1 0 [12]
1 [13,14]
2 0 [1]
1 [2]
2 [12]
Run Code Online (Sandbox Code Playgroud)
如何应用另一个groupBy操作将结果进一步连接到一个列表中?
我有两个数据帧看起来像
DF1:
ID A B C D
0 'ID1' 0.5 2.1 3.5 6.6
1 'ID2' 1.2 5.5 4.3 2.2
2 'ID1' 0.7 1.2 5.6 6.0
3 'ID3' 1.1 7.2 10. 3.2
Run Code Online (Sandbox Code Playgroud)
DF2:
ID A B C D
0 'ID1' 1.0 2.0 3.3 4.4
1 'ID2' 1.5 5.0 4.0 2.2
2 'ID3' 0.6 1.2 5.9 6.2
3 'ID4' 1.1 7.2 8.5 3.0
Run Code Online (Sandbox Code Playgroud)
df1可以有多个相同的条目,ID而每个条目ID只在df2中出现一次.同样不是IDdf2中的所有都必须存在于df1中.我无法通过使用set_index()df1中的多行来解决这个问题ID,并且IDdf1和df2中没有对齐.
我想创建一个新的数据帧,我根据匹配ID 减去df2[['A','B','C','D']]from中的值df1[['A','B','C','D']]. …
如何获取最后的'n'组df.groupby()并将它们组合为数据帧.
data = pd.read_sql_query(sql=sqlstr, con=sql_conn, index_col='SampleTime')
grouped = data.groupby(data.index.date,sort=False)
Run Code Online (Sandbox Code Playgroud)
在grouped.ngroups我做了我获得组277的总数.我想结合最后12组并生成数据帧.
我有一个笨拙的CSV文件,它有多个分隔符:非数字部分的分隔符是','数字部分';'.我想尽可能高效地构建数字部分之外的数据框.
我做了5次尝试:其中,使用正则表达式,使用,使用的converters参数.它们比读取整个CSV文件慢2倍,没有转换.这对我的用例来说太慢了.pd.read_csvengine='python'str.replace
我知道这种比较不像是喜欢,但它确实表明整体不良的性能不是由I/O驱动的.有没有更有效的方法将数据读入数字Pandas数据帧?还是等效的NumPy数组?
以下字符串可用于基准测试目的.
# Python 3.7.0, Pandas 0.23.4
from io import StringIO
import pandas as pd
import csv
# strings in first 3 columns are of arbitrary length
x = '''ABCD,EFGH,IJKL,34.23;562.45;213.5432
MNOP,QRST,UVWX,56.23;63.45;625.234
'''*10**6
def csv_reader_1(x):
df = pd.read_csv(x, usecols=[3], header=None, delimiter=',',
converters={3: lambda x: x.split(';')})
return df.join(pd.DataFrame(df.pop(3).values.tolist(), dtype=float))
def csv_reader_2(x):
df = pd.read_csv(x, header=None, delimiter=';',
converters={0: lambda x: x.rsplit(',')[-1]}, dtype=float)
return df.astype(float)
def csv_reader_3(x):
return pd.read_csv(x, usecols=[3, 4, …Run Code Online (Sandbox Code Playgroud) 我必须解析一个xml文件,它以Excel样式提供日期时间; 例如:42580.3333333333.
Pandas是否提供了将该数字转换为常规datetime对象的方法?
如何s通过字典替换Pandas系列中的值d已被多次询问和重新询问.
推荐的方法(1,2,3,4)是要么使用s.replace(d),有时也使用s.map(d)如果所有的系列值是在字典键找到.
但是,使用性能s.replace通常非常慢,通常比简单的列表理解慢5-10倍.
替代方案,s.map(d)具有良好的性能,但仅在词典中找到所有键时才建议使用.
为什么s.replace这么慢,如何提高性能?
import pandas as pd, numpy as np
df = pd.DataFrame({'A': np.random.randint(0, 1000, 1000000)})
lst = df['A'].values.tolist()
##### TEST 1 #####
d = {i: i+1 for i in range(1000)}
%timeit df['A'].replace(d) # 1.98s
%timeit [d[i] for i in lst] # 134ms
##### TEST 2 #####
d = {i: i+1 for i in range(10)}
%timeit …Run Code Online (Sandbox Code Playgroud) python ×10
pandas ×8
dataframe ×5
python-3.x ×2
arrays ×1
csv ×1
date ×1
datetime ×1
dictionary ×1
excel ×1
if-statement ×1
indexing ×1
iterator ×1
list ×1
numpy ×1
performance ×1
sorting ×1