我正在寻找关于这个问题的概念性答案。
我想知道是否ThreadPool
在python中使用来执行并发任务,保证数据不被损坏;我的意思是多个线程不会同时访问关键数据。
如果是这样,这在ThreadPoolExecutor
内部如何工作以确保一次只有一个线程访问关键数据?
我有一个数据框df
:
df =
index date hats
A1 01-01-2020 5
A1 02-01-2020 10
A1 03-01-2020 16
A1 04-01-2020 16
A1 21-01-2020 9
A1 22-01-2020 8
A1 23-01-2020 7
A6 20-03-2020 5
A6 21-03-2020 5
A8 30-07-2020 12
Run Code Online (Sandbox Code Playgroud)
这里,前四行是连续的天数。我想知道数据框中所有这些连续天数的开始日期和结束日期。如果像 wiseA8
索引那样的系列中只有一天,df
那么开始日期和结束日期将相同。此外,我也有兴趣了解df['hats']
连续天数系列中列中的最高值,并将其日期与其 datehigh_hat
一起返回到单独的列中high_hat_date
。如果在一系列连续天数中有两个或更多相等的高值,则在新列中num_hat
写入高值出现的次数,并在 中写入第一个出现日期high_hat_date
。
上述数据框的示例输出如下:
index start_date end_date high_hat high_hat_date num_hat
A1 01-01-2020 04-01-2020 16 03-01-2020 2
A1 21-01-2020 23-01-2020 9 21-01-2020 1
A6 20-03-2020 21-03-2020 5 20-03-2020 …
Run Code Online (Sandbox Code Playgroud) 我有一个这样的df,
df = pd.DataFrame({
"Name" : ["A","B","C","D","E","F","G"],
"part number" : ["1","3","2","1","5","1","2"],
"detail1" : ["A","C","B","B","E","E","E"],
"detail2" : ["one","three","two","two","five","five","five"]
})
df
Name part number detail1 detail2
A 1 A one
B 3 C three
C 2 B two
D 1 B two
E 5 E five
F 1 E five
G 2 E five
Run Code Online (Sandbox Code Playgroud)
我想按零件号分组并用第一行值填充detail1和detail2。
我的预期输出,
Name part number detail1 detail2
A 1 A one
B 3 C three
C 2 B two
D 1 A one
E 5 E five
F …
Run Code Online (Sandbox Code Playgroud) 我有一个 Pandas 数据框,其中一列是一个列表。我想扩展这个列表。
我怎样才能做到这一点?
首先:
0 [{ first: 'jon', last: 'McSmith' }, { first: 'Jennifer', last: 'Foobar'}]
1 [{ first: 'dan', last: 'Raizman' }, { first: 'Alden', last: 'Lowe'}]
Name: players, dtype: object
Run Code Online (Sandbox Code Playgroud)
结尾:
first last
--------------------------
0 Jon McSmith
1 Jennifer Foobar
2 Dan Raizman
3 Alden Lowe
Run Code Online (Sandbox Code Playgroud) 数据框是
df = pd.DataFrame({"necmi": [0, 3, 14, 15, 2, 71, 8, 2, -1],
"fehmi": ["trial", "error", "manifest", "trial", "no", "only", "error", "no", "no"]})
Run Code Online (Sandbox Code Playgroud)
这是
necmi fehmi
0 0 trial
1 3 error
2 14 manifest
3 15 trial
4 2 no
5 71 only
6 8 error
7 2 no
8 -1 no
Run Code Online (Sandbox Code Playgroud)
所以我想fehmi
根据条目的第一次出现对这个 df 进行排序,然后将它们组合在一起。想要的是
necmi fehmi
0 0 trial
1 15 trial
2 3 error
3 8 error
4 14 manifest
5 2 no
6 2 …
Run Code Online (Sandbox Code Playgroud) 我有一个 Pandas 数据框,如下所示:
ID Col.A
28654 This is a dark chocolate which is sweet
39876 Sky is blue 1234 Sky is cloudy 3423
88776 Stars can be seen in the dark sky
35491 Schools are closed 4568 but shops are open
Run Code Online (Sandbox Code Playgroud)
我试图Col.A
在单词dark
或digits
. 我想要的结果如下。
ID Col.A Col.B
28654 This is a dark chocolate which is sweet
39876 Sky is blue 1234 Sky is cloudy 3423
88776 Stars can be seen in the dark sky
35491 …
Run Code Online (Sandbox Code Playgroud) 我有看起来像这样的数据:
d = {'id' : [1, 1, 1, 2, 2, 2],
'levels': ['low', 'perfect', 'high', 'low', 'perfect', 'high'],
'value': [1, 10, 13, 2, 10, 13]}
df = pd.DataFrame(d, columns=['id', 'levels', 'value'])
df = df.groupby(['id','levels'])[['value']].mean()
Run Code Online (Sandbox Code Playgroud)
对于每一个[ID,等级],我想找到的区别value
行和value
中的perfect
一行。它看起来像这样:
id | levels | value | penalty
1 | high | 13 | 3
| low | 1 | 9
| perfect| 10 | 0
2 | high | 13 | 3
| low | 2 | 8
| …
Run Code Online (Sandbox Code Playgroud) 我有 3 列的值是 A、B 或 C 我想比较这 3 列并给出哪个值的输出超过 1 个计数。如果计数为平局,则输出将为“-”
输入:
| col1 | col2 | col3 |
|-------|-------|-------|
| A | A | B |
| A | B | B |
| C | B | C |
| A | B | C |
Run Code Online (Sandbox Code Playgroud)
输出:
| col1 | col2 | col3 | Result|
|-------|-------|-------|-------|
| A | A | B | A |
| A | B | B | B |
| C | B …
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的大数据框:
|type| qt | vol|
|----|---- | -- |
| A | 1 | 10 |
| A | 2 | 12 |
| A | 1 | 12 |
| B | 3 | 11 |
| B | 4 | 20 |
| B | 4 | 20 |
| C | 4 | 20 |
| C | 4 | 20 |
| C | 4 | 20 |
| C | 4 | 20 |
Run Code Online (Sandbox Code Playgroud)
我怎样才能像这样水平分组转置到数据框? …
我有一个如下所示的数据框。数据类型Output
为字符串。
ID Output
1 ab 1, bc 2, ac 5, at 0, abc 0
2 ab 0, ac 5, at 0
3 ac 5, bc 0, atn 0
Run Code Online (Sandbox Code Playgroud)
如您所见,第 2 行bc
被跳过,而整体顺序保持不变。但是,在 row3 中,顺序不同。如何首先插入缺失的类别,然后重新排序数据框中的字符串?换句话说,我怎样才能得到一个看起来像这样的中间数据框:
ID Output
1 ab 1, bc 2, ac 5, at 0, abc 0, atn
2 ab 0, bc, ac 5, at 0, abc, atn
3 ab, bc 0, ac 5, at, abc, atn 0
Run Code Online (Sandbox Code Playgroud)
所以最终我可以执行以下操作:
x = df['Output'].str.split(",",expand=True,)
x.columns = x.iloc[0, :].str.extract(r"^(.*)\s+")[0]
x …
Run Code Online (Sandbox Code Playgroud)