我不小心用一个错误复制的链接关闭了这个问题.这是正确的: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) 我有一个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 组合出现两次,计数器也不会增加两次。
实现这一目标的最有效方法是什么?
我有一个这样的数据框:
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)
有人可以帮忙吗?
我有一个愚蠢的数据,其中一列包含多个用逗号拼凑在一起的值:
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。列a到e应该包含该字母在该行中出现的次数:
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) 我有如下所示的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()方法,也尝试了方法。但是解决方案不适用于特定情况。
我有一个我正在为 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) 我已经导入了一个 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 将一列列表转换为虚拟对象之后,我尝试了以下代码(其中 …