我有一个需要清理的大型数据框,作为示例,请查看此数据框
import pandas as pd
cars = {'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4','Suzuki'],
'Price': ['22000.T','25000.T','27000','.TPX','.NKM1']
}
df = pd.DataFrame(cars, columns = ['Brand', 'Price'])
print (df)
Run Code Online (Sandbox Code Playgroud)
我想从单词的末尾删除 '.T',并且只删除 '.' 从包含 的行的开头。
通过以下代码行,我可以删除“.T”
df['Price'].replace('.T', '', regex=True)
Run Code Online (Sandbox Code Playgroud)
但它也从“.TPX”中删除了“T”
对此的任何建议表示赞赏。
0 22000
1 25000
2 27000
3 PX
4 .NKM1
Name: Price, dtype: object
Run Code Online (Sandbox Code Playgroud)
也用于删除“。”,当我添加这一行时
f['Price'].replace('.', '', regex=True)
Run Code Online (Sandbox Code Playgroud)
我得到了与预期不同的数据框
0
1
2
3
4
Name: Price, dtype: object
Run Code Online (Sandbox Code Playgroud) 我有一个这种格式的数据框:
ID measurement_1 measurement_2
0 3 NaN
1 NaN 5
2 NaN 7
3 NaN NaN
Run Code Online (Sandbox Code Playgroud)
我想结合到:
ID measurement measurement_type
0 3 1
1 5 2
2 7 2
Run Code Online (Sandbox Code Playgroud)
对于每一行,在其中一个measurement_1
或measurement_2
列中都有一个值,而不是在两者中,另一列将为 NaN。在某些行中,两列都是 NaN。
我想为测量类型添加一列(取决于哪一列具有值)并从两列中取出实际值,并删除两列中都有 NaN 的行。
有没有简单的方法来做到这一点?
谢谢!
是否有一种方便的方法可以根据行之间的距离合并两个数据帧?对于以下示例,我想从最近的 df2 行中获取 df1 行的颜色。距离应计算为((x1-x2)**0.5+(y1-y2)**0.5)**0.5
。
import pandas as pd
df1 = pd.DataFrame({'x': [50,16,72,61,95,47],'y': [14,22,11,45,58,56],'size':[1,4,3,7,6,5]})
df2 = pd.DataFrame({'x': [10,21,64,31,25,55],'y': [54,76,68,24,34,19],'color':['red','green','blue','white','brown','black']})
Run Code Online (Sandbox Code Playgroud) 我正在寻找关于这个问题的概念性答案。
我想知道是否ThreadPool
在python中使用来执行并发任务,保证数据不被损坏;我的意思是多个线程不会同时访问关键数据。
如果是这样,这在ThreadPoolExecutor
内部如何工作以确保一次只有一个线程访问关键数据?
我有一个带有 3 个索引级别和 2 个数字列的多索引数据框。
A 1 2017-04-01 14.0 87.346878
2017-06-01 4.0 87.347504
2 2014-08-01 1.0 123.110001
2015-01-01 4.0 209.612503
B 3 2014-07-01 1.0 68.540001
2014-12-01 1.0 64.370003
4 2015-01-01 3.0 75.000000
Run Code Online (Sandbox Code Playgroud)
我想在新的第二级索引开始的任何地方替换第三级索引第一行中的值。例如:每一行
(A,1,2017-04-01)->0.0 0.0
(A,2,2014-08-01)->0.0 0.0
(B,3,2014-07-01)->0.0 0.0
(B,4,2015-01-01)->0.0 0.0
Run Code Online (Sandbox Code Playgroud)
数据帧太大,按数据帧做数据帧df.xs('A,1')...df.xs(A,2)
会很耗时。有什么方法可以让我得到一个掩码并用这些位置的新值替换吗?
我已经将客户 ID 与他们最常购买的表演类型进行了对比:
Genre Jazz Dance Music Theatre
Customer
100000000001 0 3 1 2
100000000002 0 1 6 2
100000000003 0 3 13 4
100000000004 0 5 4 1
100000000005 1 10 16 14
Run Code Online (Sandbox Code Playgroud)
我想要的结果是根据排名附加列名:
Genre Jazz Dance Music Theatre Rank1 Rank2 Rank3 Rank4
Customer
100000000001 0 3 1 2 Dance Theatre Music Jazz
100000000002 0 1 6 2 Music Theatre Dance Jazz
100000000003 0 3 13 4 Music Theatre Dance Jazz
100000000004 0 5 4 1 Dance Music Theatre …
Run Code Online (Sandbox Code Playgroud) 我正在尝试对 Pandas 数据框中的一列进行规范化,该列是一个字典列表(可能会丢失)。
重现的例子
import pandas as pd
bids = pd.Series([[{'price': 606, 'quantity': 28},{'price': 588, 'quantity': 29},
{'price': 513, 'quantity': 33}],[],[{'price': 7143, 'quantity': 15},
{'price': 68, 'quantity': 91},{'price': 6849, 'quantity': 12}]])
data = pd.DataFrame([1,2,3]).rename(columns={0:'id'})
data['bids'] = bids
Run Code Online (Sandbox Code Playgroud)
期望输出
id price quantity
1 606 28
1 588 29
1 513 33
3 7143 15
3 68 91
3 6849 12
Run Code Online (Sandbox Code Playgroud)
试图
尝试使用 Pandas json_normalize 解决,遵循此处的文档。我很困惑为什么下面的方法都不起作用,以及什么类型的 record_path 可以解决我的问题。以下所有错误。
pd.json_normalize(data['bids'])
pd.json_normalize(data['bids'],['price','quantity'])
pd.json_normalize(data['bids'],[['price','quantity']])
Run Code Online (Sandbox Code Playgroud) 我有一个数据框并添加了最后一行的总计。
import pandas as pd
df = pd.DataFrame({'D': {0: 6, 1: 4, 2: 6},
'A': {0: 1, 1: 2, 2: 3},
'C': {0: 2, 1: 7, 2: 5},
'B': {0: 4, 1: 5, 2: 6}})
df = df.append(df.sum(), ignore_index=True)
df
D A C B
0 6 1 2 4
1 4 2 7 5
2 6 3 5 6
3 16 6 14 15
Run Code Online (Sandbox Code Playgroud)
如何过滤,例如仅保留最后一行值(总计)高于 10 的列?预期输出:
D C B
0 6 2 4
1 4 7 5
2 6 …
Run Code Online (Sandbox Code Playgroud) 嘿,这里是一个 python 新手。
假设我有这个数据数据框的前两列:
df = pd.DataFrame({'group': ["Sun", "Moon", "Sun", "Moon", "Mars", "Mars"],
'score': [2, 13, 24, 15, 11, 44],
'datetime': ["2017-08-30 07:00:00", "2017-08-30 08:00:00", "2017-08-31 07:00:00", "2017-08-31 08:00:00", "2017-08-29 21:00:00", "2017-08-28 21:00:00"],
'difference': [2, 13, 22, 2, -33, 44]})
Run Code Online (Sandbox Code Playgroud)
我想创建一个名为difference
(我把它放在那里作为插图)的新列,这样它就相等:
例如,第 3 行中的差异等于:该行中的分数 -08:00:00
该组(即月亮)的前一天(30 日)的分数,即15 - 13 = 2
。如果前一天和同一时间不存在,则取该行的分数值(例如,在第 0 行,时间2017-08-30 07:00:00
没有2017-08-29 07:00:00
,因此只取 2)。
我写了以下内容:
df['datetime'] = pd.to_datetime(df['datetime'])
before = df['datetime'] - pd.DateOffset(days=1)
df['difference'] = df.groupby(["group", …
Run Code Online (Sandbox Code Playgroud) 大家,早安。我正在使用 Python 和 Pandas。
我有两个数据帧,类型如下:
df_C = pd.DataFrame(data=[[-3,-1,-1], [5,3,3], [3,3,1], [-1,-1,-3], [-3,-1,-1], [2,3,1], [1,1,1]], columns=['C1','C2','C3'])
C1 C2 C3
0 -3 -1 -1
1 5 3 3
2 3 3 1
3 -1 -1 -3
4 -3 -1 -1
5 2 3 1
6 1 1 1
df_F = pd.DataFrame(data=[[-1,1,-1,-1,-1],[1,1,1,1,1],[1,1,1,-1,1],[1,-1,-1,-1,1],[-1,0,0,-1,-1],[1,1,1,-1,0],[1,1,-1,1,-1]], columns=['F1','F2','F3','F4','F5'])
F1 F2 F3 F4 F5
0 -1 1 -1 -1 -1
1 1 1 1 1 1
2 1 1 1 -1 1
3 1 -1 -1 -1 1
4 …
Run Code Online (Sandbox Code Playgroud) python ×10
pandas ×9
dataframe ×8
json ×1
multi-index ×1
normalize ×1
numpy ×1
python-3.x ×1
regex ×1