我有以下数据框
df1 = pd.DataFrame({'Name': ['A0', 'A1', 'A2', 'A3', 'A4'],
'Buy': [True, True, False, False, False],
'Sell': [False, False, True, False, True]
},
index=[0, 1, 2, 3, 4])
df1
Name Buy Sell
0 A0 True False
1 A1 True False
2 A2 False True
3 A3 False False
4 A4 False True
Run Code Online (Sandbox Code Playgroud)
我想合并 Buy 和 Sell 列的条件是,如果“Buy”具有 True 价值,则“Buyer”,如果“Sell”具有 True 价值,则“Seller”,如果“Buy”和“Sell”都具有 False 价值,那么它应该有“NA”
sample required output
Name Type
0 A0 Buyer
1 A1 Buyer
2 A2 Seller
3 A3 NA
4 …Run Code Online (Sandbox Code Playgroud) 我有一个数据框,例如:
query qstart qend name number strand
A 2.0 1064.0 None 0 +
B 2.0 1076.0 None 0 +
C 2.0 1064.0 None 0 +
D 0.0 741.0 None 0 +
Run Code Online (Sandbox Code Playgroud)
我想删除所有小数并得到:
query qstart qend name number strand
A 2 1064 None 0 +
B 2 1064 None 0 +
C 2 1064 None 0 +
D 0 741 None 0 +
Run Code Online (Sandbox Code Playgroud)
我试过:
df['qstart']= round(df['qstart'])
df['qend']= round(df['qend'])
Run Code Online (Sandbox Code Playgroud)
但它不起作用......
这是我最初的字典:
dic = {'key1': [2,3],
'key2': [5,1],
'key3': [6,8]}
Run Code Online (Sandbox Code Playgroud)
注意:为了示例的目的,我使用简单的数字 2,3 等(我这边的 dfs 列表)。
对于每个键,我想提取第一个元素并获得以下结果:
dic2 = {'key1': 2,
'key2': 5,
'key3': 6}
Run Code Online (Sandbox Code Playgroud)
是否可以在不进行缓慢的 for 循环的情况下做到这一点?字典还蛮大的...
非常感谢您的帮助。
通常我通过使用 hashlib 和使用 .apply(hash) 函数来匿名化我的数据。
现在我正在尝试一种新方法,想象一下我必须遵循名为“数据”的 df:
df = pd.DataFrame({'contributor':['eric', 'frank', 'john', 'frank', 'barbara'],
'amount payed':[10,28,49,77,31]})
contributor amount payed
0 eric 10
1 frank 28
2 john 49
3 frank 77
4 barbara 31
Run Code Online (Sandbox Code Playgroud)
我想通过转动名称全部变成匿名化person1,person2等等,是这样的:
output = pd.DataFrame({'contributor':['person1', 'person2', 'person3', 'person2', 'person4'],
'amount payed':[10,28,49,77,31]})
contributor amount payed
0 person1 10
1 person2 28
2 person3 49
3 person2 77
4 person4 31
Run Code Online (Sandbox Code Playgroud)
所以我的第一个虽然是总结name列,以便名称附加到唯一索引,我可以使用该索引作为“person”之后的数字。
我有一个包含两列的数据框。第一个是time从 1 开始计数。
重要的是一堆 1 和 0。我想知道 1 重复特定的 n 次有多少次。例如,假设我有 100 个随机放置的 1 和 0 的值,我想知道有多少次连续出现至少 5 个 1。这意味着我想知道它重复 5、6、7 或任何更大次数的次数。
以前有人做过类似的事情吗?
我有一个 pandas 数据框,其中包含字符串格式的列值和日期时间索引。我想创建一个新列,其中包含过去两天的列值列表。使用 pandas 可以实现这一点吗?
原始数据农场:
date col1 col2
0 2018-07-08 a b
1 2018-07-09 c d
2 2018-07-10 e f
3 2018-07-11 g h
4 2018-07-12 i j
5 2018-07-13 k l
6 2018-07-14 m n
Run Code Online (Sandbox Code Playgroud)
最终数据框:
date col1 col2 col3
0 2018-07-08 a b NaN
1 2018-07-09 c d NaN
2 2018-07-10 e f b, d
3 2018-07-11 g h d, f
4 2018-07-12 i j f, h
5 2018-07-13 k l h, j
6 2018-07-14 m n …Run Code Online (Sandbox Code Playgroud) 我需要在Pandas数据框中按行计算1到5的整数。例如,对于
import pandas as pd
df = pd.DataFrame({'c1': [3, 1, 2], 'c2': [3, 3, 3], 'c3': [2, 5, None], 'c4': [1, 2, 3]})
c1 c2 c3 c4
0 3 3 2.0 1
1 1 3 5.0 2
2 2 3 NaN 3
Run Code Online (Sandbox Code Playgroud)
将创建以下内容:
n1 n2 n3 n4 n5
0 1 1 2 0 0
1 1 1 1 0 1
2 0 1 2 0 0
Run Code Online (Sandbox Code Playgroud)
我遇到过.value_counts和crosstab,但是我只是无法设置其中之一来获取我需要的东西。任何帮助将非常感激。
提前致谢!
我有一个类似于
test_a test_b metric_e
0 OK NOK 12
1 OK OK 7
2 OK NOK 2
3 OK OK 55
Run Code Online (Sandbox Code Playgroud)
我想按一个条件过滤,这意味着test_a == OK并捕获metric_e. 我可以用两行来完成,复制一个数据帧:
df_t = df[df.test_a == 'OK'].reset_index(drop=True)
df_t.iloc[df_t.metric_e.idxmin()].to_frame()
test_a | test_b | metric_e
OK | NOK | 2
Run Code Online (Sandbox Code Playgroud)
有没有办法在不必使用中间数据帧的情况下做到这一点?
我有一个看起来像这样的数据框:
time speaker label_1 label_2
0 0.25 1 10 4
1 0.25 2 10 5
2 0.50 1 10 6
3 0.50 2 10 7
4 0.75 1 10 8
5 0.75 2 10 9
6 1.00 1 10 11
7 1.00 2 10 12
8 1.25 1 11 13
9 1.25 2 11 14
10 1.50 1 11 15
11 1.50 2 11 16
12 1.75 1 11 17
13 1.75 2 11 18
14 2.00 1 11 19 …Run Code Online (Sandbox Code Playgroud) 我在解决以下问题时遇到困难。
我有一个df['subjects']有字符串列表的熊猫。
df['subjects'].head(3) =
0['B:1187', 'B:1188', 'P:123456', 'B:62']
1['G:1', 'G:1C', 'G:21', 'G:3', 'G:30']
2['B:71', 'E:D', 'G:6J', 'P:125467', 'B:1296', 'P:789456']
Run Code Online (Sandbox Code Playgroud)
基本上我需要的是以下内容..
df['subjects'] =
123456
None
125467,789456
Run Code Online (Sandbox Code Playgroud)
我只需要返回具有的值 P:XXXXX
我试过使用 for 循环,但我一直得到错误的值。