相关疑难解决方法(0)

将两个 pandas DataFrame 合并到包含列表的单元格上

我有两个 DataFrame,其中一个包含一列,其单元格内包含列表。这是一个例子:

DF 1 :
   | A      B
---+----------------------------
0  | 'A'    ['A', 'B']
1  | 'B'    ['B', 'D']
2  | 'C'    ['D', 'E', 'F']

DF 2 :
   | C      D
---+----------------------------
0  | 'A'    'X'
1  | 'B'    'Y'
2  | 'C'    'Z'
Run Code Online (Sandbox Code Playgroud)

这是设置 DataFrame 的代码:

df1 = pd.DataFrame({'A': ["A", "B", "C"], "B": [["A", "B"], ["B", "D"], ["D", "E", "F"]]})
df2 = pd.DataFrame({'C': ["A", "B", "C"], "D": ["X", "Y", "Z"]})
Run Code Online (Sandbox Code Playgroud)

我想用条件在 DF1 和 DF2 之间进行内部联接DF2.C in DF1.B,这是我期望的结果: …

python pandas

5
推荐指数
1
解决办法
1475
查看次数

Python Pandas:从列表列的值创建新行

我有一个 Pandas 数据框,如下所示:

              tags   value
[tag1, tag2, tag3]       0
[tag2, tag3]            10
[tag1, tag3]            50
                       ...
Run Code Online (Sandbox Code Playgroud)

在此数据框上,我想应用一个函数,对于每行的每个标签,将创建一个包含“标签”列和“相关标签”列的新行。这是我所期待的一个例子:

 tag   value    related_tags
tag1       0    [tag2, tag3] 
tag2       0    [tag1, tag3] 
tag3       0    [tag1, tag2] 
tag2      10    [tag3]     
tag3      10    [tag2]    
tag1      50    [tag3]   
tag3      50    [tag1]
Run Code Online (Sandbox Code Playgroud)

我熟悉 Spark DataFrames 但不熟悉 Pandas,有没有一种简单的方法可以实现这一点?

python pandas

5
推荐指数
1
解决办法
1227
查看次数

如何转换存储为两列(开始、结束)的日期范围以创建新行索引并填充值

我想将存储为两列(开始、结束)+值的日期范围转换为仅包含日期和值的两个新列。

\n\n

我的数据:

\n\n
    id     end          start        value\n1   4421   2014-01-01   2014-01-03   10\n2   4421   2014-01-04   2014-01-04   500\n3   4421   2014-01-05   2014-01-07   20\n4   5560   2014-01-02   2014-01-03   100\n5   5560   2014-01-04   2014-01-04   600\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想要的是:

\n\n
    Date         id     value\n0   2014-01-01   4421   10\n1   2014-01-02   4421   10\n2   2014-01-03   4421   10\n3   2014-01-04   4421   500\n4   2014-01-05   4421   20\n5   2014-01-06   4421   20\n6   2014-01-07   4421   20\n7   2014-01-01   5560   NA\n8   2014-01-02   5560   100\n9   2014-01-03   5560   100\n10  2014-01-04   5560   600\n
Run Code Online (Sandbox Code Playgroud)\n\n

I\xe2\x80\x99m 使用 dplyr,所以我可以与 mutate 和管道等一起使用的东西会很有用。

\n\n

样本数据:

\n\n
id <- c(4421, 4421, …
Run Code Online (Sandbox Code Playgroud)

time r time-series dplyr

5
推荐指数
1
解决办法
954
查看次数

根据 2 列的范围将新行插入到 Pandas 数据框中

我有一个 df 像:

ID       value1   start     end
 1         100     1        2       
 1         200     2        4
 2         50      1        1
 2         30      3        5 
Run Code Online (Sandbox Code Playgroud)

我想为开始和结束之间的每个值填充新行

最终的 df 应如下所示,其中 period 是开始和结束之间的每个唯一值

    ID       value1      period     
     1         100     1        
     1         100     2            
     1         200     2 
     1         200     3 
     1         200     4       
     2         50      1        
     2         30      3    
     2         30      4 
     2         30      5     
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

5
推荐指数
1
解决办法
418
查看次数

如何展平pandas数据框中的数组

假设我有一个 pandas 数据框,例如

df_p = pd.DataFrame(
   {'name_array':
    [[20130101, 320903902, 239032902],
     [20130101, 3253453, 239032902],
     [65756, 4342452, 32425432523]],
    'name': ['a', 'a', 'c']} )
Run Code Online (Sandbox Code Playgroud)

数据框图像

我想提取包含每行中的展平数组的系列,同时保留顺序

预期结果是pandas.core.series.Series

预期输出图像

这个问题不是重复的,因为我的预期输出是 pandas 系列,而不是数据框。

python series flatten pandas

5
推荐指数
2
解决办法
2万
查看次数

Pandas groupby用于一列中的多个值

我有一个类似于以下内容的数据框

+----------------+-------+
| class          | year  |
+----------------+-------+
| ['A', 'B']     | 2001  |
| ['A']          | 2002  |
| ['B']          | 2001  |
| ['A', 'B', 'C']| 2003  |
| ['B', 'C']     | 2001  |
| ['C']          | 2003  |
+----------------+-------+
Run Code Online (Sandbox Code Playgroud)

我想使用它创建一个数据框,以使结果表显示每个类中每个类别的计数。

+-----+----+----+----+
|year | A  | B  | C  |
+-----+----+----+----+
|2001 | 1  | 3  | 1  |
|2002 | 1  | 0  | 0  |
|2003 | 1  | 1  | 2  |
+-----+----+----+----+
Run Code Online (Sandbox Code Playgroud)

最简单的方法是什么?

python pandas

5
推荐指数
1
解决办法
65
查看次数

将行列表转换为Pandas中的频率表

我有一个熊猫数据框:

   |     items
--------------
0  |    [a]
1  |    [a, b]
2  |    [d, e, f,f]
3  |    [d, f, e]
4  |    [c, a, b]
Run Code Online (Sandbox Code Playgroud)

我想计算列表中每个项目的频率,并构建一个如下表:

    a|  b|  c|  d|  e|  f
-------------------------
0|  1|  0|  0|  0|  0|  0
1|  1|  1|  0|  0|  0|  0
2|  0|  0|  0|  1|  1|  2
3|  0|  0|  0|  1|  1|  1
4|  1|  1|  1|  0|  0|  0
Run Code Online (Sandbox Code Playgroud)

我看着pandas.explode,但我不认为这是我想要的。

我可以在下面做类似的事情。但是我觉得可能会有更有效的方法来做到这一点。我大约有350万行。

   |     items
--------------
0  |    [a]
1 …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas

5
推荐指数
1
解决办法
94
查看次数

熊猫爆炸失败,KeyError: 0

一个pandas.DataFrame.explode作品如何?

在文档中:

https://pandas.pydata.org/pandas-docs/version/0.25/reference/api/pandas.DataFrame.explode.html

df = pd.DataFrame({'A': [[1, 2, 3], 'foo', [], [3, 4]], 'B': 1})
display(df)
print(df.columns)
print(df.dtypes)
df.explode('A')
Run Code Online (Sandbox Code Playgroud)

工作得很好。但是对于我的数据,它因一个关键异常而失败。我的数据最初是这样的: 在此处输入图片说明

具有以下类型:

print(foo.columns)
print(foo.dtypes)
Index(['model', 'id_min_days_cutoff'], dtype='object')
model                 object
id_min_days_cutoff     int64
dtype: object
Run Code Online (Sandbox Code Playgroud)

其中model是使用 statsmodels 回归获得的:

model.summary2().tables[1]
Run Code Online (Sandbox Code Playgroud)

调用时:df.explode('model')

它失败了:

KeyError: 0
Run Code Online (Sandbox Code Playgroud)

试图重现这一点:

df_json = df.to_json()

# now load it again for SF purposes
df_json = '{"model":{"0":{"Coef.":{"ALQ_15PLUS_perc":95489.7866599741,"AST_perc":-272.9213162565,"BEV_UNTER15_perc":6781.448845533,"BEV_UEBER65_perc":-46908.2889142205},"Std.Err.":{"ALQ_15PLUS_perc":1399665.9788843254,"AST_perc":1558.1286516172,"BEV_UNTER15_perc":2027111.8764156068,"BEV_UEBER65_perc":1230965.9812726702},"z":{"ALQ_15PLUS_perc":0.0682232676,"AST_perc":-0.1751596802,"BEV_UNTER15_perc":0.0033453747,"BEV_UEBER65_perc":-0.038106893},"P>|z|":{"ALQ_15PLUS_perc":0.9456079052,"AST_perc":0.8609541651,"BEV_UNTER15_perc":0.9973307821,"BEV_UEBER65_perc":0.9696024555},"[0.025":{"ALQ_15PLUS_perc":-2647805.1223393031,"AST_perc":-3326.7973567063,"BEV_UNTER15_perc":-3966284.8215624653,"BEV_UEBER65_perc":-2459557.2784026605},"0.975]":{"ALQ_15PLUS_perc":2838784.6956592514,"AST_perc":2780.9547241933,"BEV_UNTER15_perc":3979847.7192535317,"BEV_UEBER65_perc":2365740.7005742197}},"1":{"Coef.":{"ALQ_15PLUS_perc":-140539.5196612777,"AST_perc":142.579413527,"BEV_UNTER15_perc":-45288.5612893498,"BEV_UEBER65_perc":-152106.9841374909},"Std.Err.":{"ALQ_15PLUS_perc":299852250.9155113101,"AST_perc":24013.7007484301,"BEV_UNTER15_perc":417010365.7919532657,"BEV_UEBER65_perc":171876588.9403209388},"z":{"ALQ_15PLUS_perc":-0.0004686959,"AST_perc":0.0059374194,"BEV_UNTER15_perc":-0.000108603,"BEV_UEBER65_perc":-0.0008849779},"P>|z|":{"ALQ_15PLUS_perc":0.9996260348,"AST_perc":0.9952626525,"BEV_UNTER15_perc":0.9999133474,"BEV_UEBER65_perc":0.9992938899},"[0.025":{"ALQ_15PLUS_perc":-587840151.997330904,"AST_perc":-46923.4091889186,"BEV_UNTER15_perc":-817370586.6933914423,"BEV_UEBER65_perc":-337024031.0927618742},"0.975]":{"ALQ_15PLUS_perc":587559072.9580082893,"AST_perc":47208.5680159725,"BEV_UNTER15_perc":817280009.5708128214,"BEV_UEBER65_perc":336719817.1244869232}}},"id_min_days_cutoff":{"0":2,"1":3}}'
pd.read_json(df_json).explode('model')
Run Code Online (Sandbox Code Playgroud)

失败:

KeyError: 0
Run Code Online (Sandbox Code Playgroud)

编辑

尝试使用以下方法之一找到替代方法:如何在 Pandas DataFrame 中取消嵌套(分解)一列?选择 2.1

pd.DataFrame({'model':np.concatenate(df_json.model.values)},
               index=df_json.index.repeat(ddf_jsonf.model.str.len()))
Run Code Online (Sandbox Code Playgroud)

但这失败了:

ValueError: zero-dimensional arrays cannot be concatenated …
Run Code Online (Sandbox Code Playgroud)

python explode pandas keyerror

5
推荐指数
1
解决办法
1113
查看次数

在熊猫数据框中拆分行

我坚持这个问题,如何按行划分熊猫数据框,

我在列中有类似的数据框,其中值之间用\ r \ n分隔并且它们在一个单元格中,

    Color                              Shape  Price
0  Green  Rectangle\r\nTriangle\r\nOctangle     10
1   Blue              Rectangle\r\nTriangle     15 
Run Code Online (Sandbox Code Playgroud)

我需要将此单元格划分为其他单元格的值与其他列相同的多个单元格,例如此处

   Color      Shape  Price
0  Green  Rectangle     10
1  Green   Triangle     10
2  Green   Octangle     10
3   Blue  Rectangle     15
4   Blue    Tringle     15
Run Code Online (Sandbox Code Playgroud)

如何做得更好?

python pandas

5
推荐指数
1
解决办法
150
查看次数

使用不相等的值列表创建熊猫数据框

除了DataFrame.from_dict能够从具有不相等值列表的字典中创建数据框之外,是否还有内置函数?

我正在尝试从以下字典创建数据框:

d = {'g': {1, 2, 3}, 'h': {4, 5}}
Run Code Online (Sandbox Code Playgroud)

因此输出应如下所示:

   value  class
0    1        g
1    2        g
2    3        g
3    4        h
4    5        h
Run Code Online (Sandbox Code Playgroud)

使用集合而不是列表是否有问题?

python dictionary python-3.x pandas

4
推荐指数
1
解决办法
55
查看次数