我有一个数据文件,它是这样的:
index buyedA total
a 2 4
b 1 2
我需要把它变成这样的东西
index buyedA total
a 1 1
a 1 1
a 0 1
a 0 1
b 1 1
b 0 1
对于每个索引,需要按列总计(每个行填充值为1)指定的多行,如果列buyedA表示为2,则需要用1填充的行中的2行。
在Python中有这样做的方法吗?
谢谢!
我正试图根据其他列来计算如何用文本填充一些行,但我很难弄清楚。下面是我在熊猫data frame中拥有的数据子集的一个例子。
Group Name_X Name_Y Code Group_Code Group_Correct
0 Group_A Company_PJ Company_PJ M001 1-00-002 Group_A
1 Group_A_Ltd Company_PJ NaN NaN NaN NaN
2
我有一个数据框架,比如:
Name A B C
0 Sen 1 0 NaN
1 Kes 0 1 0
2 Pas 0 0 1
3 Sen 0 0 NaN
4 Pas 0 0 2
我想用一条规则分别删除每个列的重复项:
名称列是关键字。
例如,Sen是重复的,但它的值只在A中更改,对于B&C,它的值是相同的。因此,对于A,我想做一个OR操作,并将Sen A的值保留为1,而在另一行中,它应该填充'Nan‘。
基本上,我不想删除整行以进行复制,而是修改每列中所有列的值。
预期输出:
Name
Dataframe包含一些列。列'model‘包含一些相同的值,但列'power’未满。如何通过另一行中的相同'model‘填充'power’中的所有NaN值?
display(df)
model power ...
0 A 100 ...
1 B 200 ...
2 A NaN ...
3 C 300 ...
4 B NaN ...
预期结果如下:
model
这是我的数据集的例子。通过组合使用store_id和product_id,您可以拥有唯一的id。 store_id product_id Date
a 1
a 2
a 3
b 1
c 3 我想知道是否有一种方法可以为每个组添加更多行,使其位于date列下的某个时间范围内。例如: pd.date_range('12-01-2017', '12-31-2017',freq='7D'
我的熊猫数据图如下所示
country date gd
US 01-01-2014 2
US 01-01-2015 3
US 01-01-2013 0.4
UK 01-01-2000 0.7
UK 02-01-2001 0.5
UK 01-01-2016 1
我想做的是:
1)填写从每个国家开始的所有日期(每天)
2)用以前的可用数据填充gd列
非常感谢你的帮助
假设我有以下数据框架df1
A B C D
0 foo one 1 0
1 bar two 2 1
2 foo two 3 0
3 bar two 4 1
4 foo two 5 0
5 bar two 6 1
6 foo one 7 0
7 foo two 8 1
我想把它变成像这样的dataframe df2:
A B C D
foo [one,two] [1,3,5,7,8] 0
bar [
对于如下数据,我希望在每组city和district中填充缺失的年份(从2015年到2017年);然后通过按列分组计算pct:city、district和year,最后一步是水平显示value和pct列?
city district value year
0 sh a 2 2015
1 sh a 3 2016
2 sh b 5 2015
3 sh b 3 2016
4 bj c 4 2015
5 bj c 3
我已经创建了一个列名和行的数据框架。例如
a b c d
1 Nan Nan Nan Nan
2 Nan Nan Nan Nan
3 Nan Nan Nan Nan
现在,我想用tsv文件中的值来填充数据。我的档案如下:
1 b 80
2 c 90
3 a 60
来创建这个
a b c d
1 Nan 80 Nan Nan
2 Nan Nan 90 Nan
3 60 Nan Nan Nan
我可以用我的文件中的值填充数据吗?因此,我希望python查找正确的行和列,并将我的值放在那里。提前感谢!
我有一个有7列的表,每隔几行,就有6列保持不变,只有7列变化。我想将所有这些行合并成一行,并将第7列的值合并到一个列表中。
所以如果我有这个数据
A B C
0 a 1 2
1 b 3 4
2 c 5 6
3 c 7 6
我想将其转化为:
A B C
0 a 1 2
1 b 3 4
2 c [5, 7] 6
因为A和C列的值在第2行和第3行是相同的,所以它们会折叠成一行,B的值将合并成一个列表。
熔化,爆炸和枢轴似乎没有这样的功能。如何使用Pandas来实现这一点?
我很难弄清楚如何按列对行进行分组。我的目标是计算列值为橙色和蓝色的“包代码”的数量。
我正在处理数千行数据。这是数据的一个子集:
Country Package Code Color Type
US 100 Orange a
US 100 Orange b
US 100 Orange c
Mexico 200 Green d
US 300 Blue e
Canada 4
我想在2列中填充缺少的值。对于预定义的Cat1 (在之前填充的行中预定义),存在Date,并且应根据另一行的值填充Cat2,例如:
数据示例:
Day Date Cat1 Cat2
1 31/12/17 cat mouse
2 01/09/18 cat mouse
3 27/05/18 dog elephant
4 NaN cat NaN
5 NaN cat NaN
因此,Date列的NaN应该根据Cat1列- 01/09/18中的cat值的最后存在日期
我有一张数据,看起来是这样的:
a b
0 A 0.15
1 A 0.25
2 A 0.10
3 B 0.20
4 B 0.10
5 B 0.25
6 B 0.60
7 C 0.50
8 C 0.70
我想要添加一个列'c‘,它将'b’的值乘以它在'a‘列中属于的组的总和。因此,第一行应该是0.15 * 0.5 (A组和)= 0.075。这是列'c‘=B1*SUMIF($A$1:$A$9,A1,$B$1:$B$9)的excel公式。
生成的dataframe应该如下所示:
a b c
0
我下面有个数据
A B
0 a 1
1 a 2
2 c 3
3 c 4
4 e 5
我想得到求和结果below.key =列A
df.B.groupby(df.A).agg(np.sum)
但我想加入具体的行。
B
a 3
b 0
c 7
d 0
e 5
f 0
但我应该加上"b“和”d“,”f“
我怎样才能得到这个结果?
我有两个数据帧 df1 product_id value name
abc 10 a
def 20 b
ggg 10 c 使用df2.groupby(['prod_id'])['code'].count().reset_index()后得到的df2 prod_id code
abc 10
def 20
ggg 10
ooo
我有以下数据:
Name B C D E
1 A 1 2 2 7
2 A 7 1 1 7
3 B 1 1 3 4
4 B 2 1 3 4
5 B 3 1 3 4
我要做的是获得一个新的数据,对于具有相同“名称”的行,"B“列中的元素是连续的,因此在本例中,对于"Name”= A的行,数据必须填充1到7之间的元素,而C、D、E列的值应该是0。
Name B C D E
1 A 1 2 2 7
2 A 2 0 0 0
3
我有一个如下所示的df a c d
0 ABC 0.4 y
1 ABC 0.3 x
2 DEF 0.3 x
3 DEF 0.2 x
4 DEF 0.5 x
5 DEF 0.4 y 我想按列'c‘对df排序,然后按列'a’对df进行排序,如果‘d’列的值=该组最后一行的'y‘,则删除该组的所有行 我的预期输出是 a c d
2 DEF 0.2 x
3 DEF 0.3 x
4 DEF 0.4 y
5 DEF 0.5 x 因此,组'ABC‘在按列&
df = pd.DataFrame({'x':[1,2,3,4,5,6],'y':[7,8,9,10,11,12],'z':['a','a','a','b','b','b']})
i = pd.Index([0,3,5,10,20]) i中的索引来自较大的数据帧,而df是该较大数据帧的子集。因此,i中将会有不在df中的索引。当我这样做的时候 df.groupby('z').aggregate({'y':lambda x
我有两列: Col1 Col2
------------
Date1 A
Date1 B
Date2 C
Date3 A 输出应为: 列: A、B、C A B C
------------------------
Date1 Date1 Date2
Date3 NaN Nan 我的列列表是A,B,C,D,E,F 如果我的最终结果没有其他列,比如D,E,F。我需要为这些列创建缺少的值 最终输出: A B C D E F
-------
我的问题与这里的另一篇文章有关,但它没有回答我的问题。
我有这个数据:
Fruit Name Number
Apples Bob 7
Apples Bob 8
Apples Mike 9
Apples Steve 10
Apples Bob 1
Oranges Bob 2
Oranges Tom 15
Oranges Mike 57
Oranges Bob 65
Oranges Tony 1
Grapes Bob 1
Grapes Tom 87
Grapes Bob 22
Grapes