相关疑难解决方法(0)

如何最好地将包含列表或元组的Pandas列提取到多个列中

我不小心用一个错误复制的链接关闭了这个问题.这是正确的:Pandas将列表列拆分为多列.

假设我有一个数据框,其中一列是一个列表(已知且相同的长度)或元组,例如:

df1 = pd.DataFrame(
 {'vals': [['a', 'b', 'c', 'd'],['e','f','g','h']]}
)
Run Code Online (Sandbox Code Playgroud)

即:

    vals
0   [a, b, c, d]
1   [e, f, g, h]
Run Code Online (Sandbox Code Playgroud)

我想将"vals"中的值添加到单独的命名列中.我可以通过遍历行来笨拙地做到这一点:

for i in range(df1.shape[0]):
   for j in range(0,4):
      df1.loc[i, 'vals_'+j] = df1.loc[i, 'vals'] [j]
Run Code Online (Sandbox Code Playgroud)

结果符合要求:

    vals            vals_0  vals_1  vals_2  vals_3
0   [a, b, c, d]    a       b       c       d 
1   [e, f, g, h]    e       f       g       h
Run Code Online (Sandbox Code Playgroud)

有更整洁(矢量化)的方式吗?我尝试使用[]但是我收到了一个错误.

   for j in range (0,4)
       df1['vals_'+str(j)] = df1['vals'][j]
Run Code Online (Sandbox Code Playgroud)

得到:

ValueError: Length of values does not …
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
2
解决办法
994
查看次数

Pandas:如何根据不同列的值对列元素的组合进行分组以指示共现?

我有一个df形式的熊猫数据框,

Batch_ID    Product_ID
   1            A
   1            B
   1            C
   2            B
   2            B
   2            C
   2            C
   3            B
   3            B
   3            C
   4            C
   4            D
   5            D
Run Code Online (Sandbox Code Playgroud)

我想从中获得一个边缘列表,本质上是一个新的数据帧edge_list_df(然后我不能将其转换为 networkx 对象),

Source       Target         Weight
  A             B             1.0
  A             C             1.0
  A             D             0.0
  B             C             3.0
  B             D             0.0
  C             D             1.0
Run Code Online (Sandbox Code Playgroud)

请注意,我在示例中给出了许多不同的可能性,以确保我的问题清楚。例如,即使 Batch_ID=2 BC 组合出现两次,计数器也不会增加两次。

实现这一目标的最有效方法是什么?

python numpy networkx pandas

3
推荐指数
1
解决办法
1036
查看次数

python pandas:将以逗号分隔的列拆分为新列-每个值一个

我有一个这样的数据框:

data = np.array([["userA","event2, event3"],
            ['userB',"event3, event4"],
            ['userC',"event2"]])

data = pd.DataFrame(data)

        0         1
0   userA   "event2, event3"
1   userB   "event3, event4"
2   userC   "event2"
Run Code Online (Sandbox Code Playgroud)

现在我想得到一个这样的数据框:

       0    event2      event3      event4
0   userA     1           1
1   userB                 1           1
2   userC     1
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

python pandas data-cleaning

3
推荐指数
1
解决办法
2524
查看次数

拆分 pandas 列并创建计算拆分值的新列

我有一个愚蠢的数据,其中一列包含多个用逗号拼凑在一起的值:

In [62]: df = pd.DataFrame({'U': ['foo', 'bar', 'baz'], 'V': ['a,b,a,c,d', 'a,b,c', 'd,e']})                                     

In [63]: df                                                                                                                      
Out[63]: 
     U          V
0  foo  a,b,a,c,d
1  bar      a,b,c
2  baz        d,e

Run Code Online (Sandbox Code Playgroud)

现在我想拆分列V,删除它,然后a通过添加列e。列ae应该包含该字母在该行中出现的次数:

In [62]: df = pd.DataFrame({'U': ['foo', 'bar', 'baz'], 'V': ['a,b,a,c,d', 'a,b,c', 'd,e']})                                     

In [63]: df                                                                                                                      
Out[63]: 
     U  a  b  c  d  e
0  foo  2  1  1  1  0
1  bar  1  1  1  0  0
2  baz  0  0  0 …
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
1
解决办法
1761
查看次数

将包含可变长度列表的数据框列转换为数据框中的多列

我有如下所示的pandas数据框。

该列props包含列表,列表中的元素长度不同。我知道列表中的最大条目数为5。我也知道列表是有序的,即我知道第二项始终属于具有特定标题(例如“时态”或“数字”)的列。然后,如何将列表中的每个条目转换为单独的列?

id  source   type   target          props                        subtype
2   wyrzuci?    V   wyrzucisz       [FUT, 2, SG]                 NaN
6   ?niada?     V   ?niada?         [NFIN]                       NaN
7   bankrutowa? V   bankrutuj?cy    [PST, ACT, PL, MASC, HUM]    PTCP
8   chwia?      V   b?d? chwia?y    [FUT, 3, PL]                 NaN
23  doby?       V   doby?a?         [PST, 2, SG, FEM]            NaN
Run Code Online (Sandbox Code Playgroud)

我已经尝试usntack()tolist()方法,也尝试了方法。但是解决方案不适用于特定情况。

python pandas

2
推荐指数
1
解决办法
351
查看次数

将 Pandas DataFrame 列拆分为 OneHot/Binary 列

我有一个我正在为 SciKit Learn PCA 格式化的 DataFrame 看起来像这样:

datetime |  mood |  activities |  notes

8/27/2017 |  "good" | ["friends", "party", "gaming"] | NaN

8/28/2017 |  "meh" |  ["work", "friends", "good food"] | "Stuff stuff"

8/29/2017 |  "bad" |  ["work", "travel"] |  "Fell off my bike"
Run Code Online (Sandbox Code Playgroud)

...等等

我想把它改成这个,我认为这对机器学习工作会更好:

datetime |  mood |  friends | party | gaming | work | good food | travel |  notes

8/27/2017 |  "good" | True | True | True | False | False | False …
Run Code Online (Sandbox Code Playgroud)

python machine-learning dataframe pandas scikit-learn

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

Pandas 在更广泛的数据框中转换虚拟变量列表

我已经导入了一个 json 文件,现在有一个数据框,其中一列(代码)是一个列表。

index year   gvkey    code
0    1998    15686    ['TAX', 'ENVR', 'HEALTH']
1    2005    15372    ['EDUC', 'TAX', 'HEALTH', 'JUST']
2    2001    27486    ['LAB', 'TAX', 'HEALTH']
3    2008    84967    ['HEALTH','LAB', 'JUST']
Run Code Online (Sandbox Code Playgroud)

我想要得到的是如下内容:

index year   gvkey  TAX  ENVR HEALTH EDUC JUST LAB
0    1998    15686   1     1     1    0    0    0
1    2005    15372   1     0     1    0    1    0
2    2001    27486   1     0     1    0    1    0
3    2008    84967   0     0     1    0    1    1
Run Code Online (Sandbox Code Playgroud)

在Pandas 将一列列表转换为虚拟对象之后,我尝试了以下代码(其中 …

python list dataframe pandas dummy-variable

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