我有看起来像的数据框:
Groupe Id MotherName FatherName Field
Advanced 56 Laure James English-107,Economics, Management, History, Philosophy
Middle 11 Ann Nicolas Web-development, Java-2
Advanced 6 Helen Franc Literature, English-2
Beginner 43 Laure James Mathematics, History, Philosophy, Literature
Middle 14 Naomi Franc Java-2, Management, English-107
为了进一步处理数据,我需要拆分该Field
列,然后将其替换为如下所示的多列:
Id English-107 Economics Management History Web-development Java-2 Literature English-2 Mathematics Philosophy
56 1 1 1 1 0 0 0 0 0 1
11 0 0 0 0 1 1 0 0 0 0
因此,这些列可以追加到初始数据帧。我不知道该怎么做,因为像
pd.DataFrame(df.Field.str.split(',',1).tolist())
不能解决我的问题,因为我不仅需要基于列表中位置的列,还需要基于列表中每个唯一值的列。您知道我该如何处理吗?
您可以使用concat
和str.get_dummies
:
print pd.concat([df['Id'], df['Field'].str.get_dummies(sep=",")], axis=1)
Id Economics English-107 English-2 History Java-2 Literature \
0 56 1 1 0 1 0 0
1 11 0 0 0 0 1 0
2 6 0 0 1 0 0 1
3 43 0 0 0 1 0 1
4 14 0 1 0 0 1 0
Management Mathematics Philosophy Web-development
0 1 0 1 0
1 0 0 0 1
2 0 0 0 0
3 0 1 1 0
4 1 0 0 0
如果需要计数值,则可以使用pivot_table
(我添加一个字符串Economics
进行测试):
df1 = df['Field'].str.split(',',expand=True).stack()
.groupby(level=0)
.value_counts()
.reset_index()
df1.columns=['a','b','c']
print df1.pivot_table(index='a',columns='b',values='c').fillna(0)
b Economics English-107 English-2 History Java-2 Literature Management \
a
0 2 1 0 1 0 0 1
1 0 0 0 0 1 0 0
2 0 0 1 0 0 1 0
3 0 0 0 1 0 1 0
4 0 1 0 0 1 0 1
b Mathematics Philosophy Web-development
a
0 0 1 0
1 0 0 1
2 0 0 0
3 1 1 0
4 0 0 0
我有一个数据框架,我想从其中一列的列表中创建5列 示例: 请注意,这里很少有列表少于5列,对于这些列,请在该位置插入NAN。
我有一个学生名单a和学生名单B。 学生对象包含如下字段:否、年龄、城市、出生日期、工资 我的列表A包含这些对象 我的列表B包含这些对象 我想做的是提取ListA有但listB没有的学生对象,以及ListA和listB有但薪水不同的学生对象(如否、年龄、城市)。我还想写工资差异。 我想在java 8中使用流api。首先,我想将students对象提取到列表中,但我现在可以提取常见的student对象
问题内容: 我有一个表,其中包含商店中每件商品的单价和其他详细信息。 另一个包含每个订单中包含的项目的详细信息。 现在我要计算 请注意,我希望它成为表本身的一部分,而不是作为其他视图或查询。我怎样才能做到这一点?我为此研究了触发器和其他机制,但是它们是否适用于不同表中的值,尤其是在存在此类约束的情况下? 我尝试过根据另一列计算出的Column进行以下触发吗?: 但这似乎没有用 问题答案: 这是如何
在这个例子中,我们将引入from()函数。使用这个特殊的“创建”函数,我们可以从一个列表中创建一个Observable。Observable将发射出列表中的每一个元素,我们可以通过订阅它们来对这些发出的元素做出响应。 为了实现和第一个例子同样的结果,我们在每一个onNext()函数更新我们的适配器,添加元素并通知插入。 我们将复用和第一个例子同样的结构。主要的不同的是我们不再检索已安装的应用列表。
基于dataframe列val_1值,查看其他列col_0-10标签前缀,然后创建另一列Mycl。 数据帧看起来像: 应用逻辑后所需的数据帧: 我是trid,但这不起作用:df['mycol']=df['col'df['val_1']。aType(str)] DDL生成DataFrame: 谢谢!
问题内容: 我有以下Java6和Java8代码: Java8中有什么方法可以使用Lambda以更简洁的方式处理前一个问题? 问题答案: 流绑定到给定的可迭代/集合,因此您不能真正地“并行”迭代两个集合。 一种解决方法是创建索引流,但不一定比for循环有所改进。流版本可能如下所示: