将两个1*n的DataFrame组合成2*n的DataFrame数据
时间: 2023-11-30 11:02:47 浏览: 80
可以使用 pandas 的 concat 函数来将两个 1*n 的 DataFrame 组合成 2*n 的 DataFrame 数据。假设两个 DataFrame 分别为 df1 和 df2,代码如下:
```python
import pandas as pd
# 创建两个 1*n 的 DataFrame 数据
df1 = pd.DataFrame({'A': [1, 2, 3]})
df2 = pd.DataFrame({'B': [4, 5, 6]})
# 使用 concat 函数将两个 DataFrame 组合成 2*n 的 DataFrame 数据
df = pd.concat([df1, df2], axis=1)
print(df)
```
输出结果为:
```
A B
0 1 4
1 2 5
2 3 6
```
其中,`axis=1` 表示在列方向上进行拼接,即将两个 DataFrame 沿着列方向组合成一个新的 DataFrame。如果是在行方向上进行拼接,则需要将 `axis` 参数设置为 0。
相关问题
cf2kg_train_data = pd.DataFrame(np.zeros((self.n_cf_train, 3), dtype=np.int32), columns=['h', 'r', 't']) # 创建一个表3列 cf2kg_train_data['h'] = self.cf_train_data[0] # 现在的cf_train_data应该是train.txt和kg_final两个数据拼接在一起的表 cf2kg_train_data['t'] = self.cf_train_data[1] # 整个反的 inverse_cf2kg_train_data = pd.DataFrame(np.ones((self.n_cf_train, 3), dtype=np.int32), columns=['h', 'r', 't']) inverse_cf2kg_train_data['h'] = self.cf_train_data[1] inverse_cf2kg_train_data['t'] = self.cf_train_data[0] self.kg_train_data = pd.concat([kg_data, cf2kg_train_data, inverse_cf2kg_train_data], ignore_index=True) # 拼接 self.n_kg_train = len(self.kg_train_data)
这段代码主要是用于将协同过滤和知识图谱两个数据源进行整合,构建一个新的知识图谱数据集。具体实现过程如下:
1. 创建一个3列的表`cf2kg_train_data`,列名为'h', 'r', 't',用于存储协同过滤数据转化后的知识图谱三元组。
2. 将协同过滤数据中的用户ID和物品ID分别赋值给`cf2kg_train_data`表中的'h'和't'列。
3. 创建一个与`cf2kg_train_data`表结构相同且所有元素都为1的表`inverse_cf2kg_train_data`,用于存储协同过滤数据转化后的知识图谱三元组的反向三元组。
4. 将协同过滤数据转化后的知识图谱三元组和反向三元组合并到原有的知识图谱数据集`kg_data`中,得到一个新的知识图谱数据集`self.kg_train_data`,并将其长度赋值给`self.n_kg_train`。
这样做的目的是将协同过滤数据集转化为知识图谱数据,以便于后续使用知识图谱的方法和算法进行推荐或预测。同时,由于协同过滤数据集是基于用户和物品的关系进行建模的,因此将其转化为知识图谱数据集可以更好地与其他基于知识图谱的数据源进行整合和融合,从而提高推荐或预测的准确性和效果。
dataframe取数
### 如何在pandas DataFrame中选取数据
#### 使用`loc`方法按标签选取数据
为了按照行标签来获取指定行的数据,可以使用`loc`属性。此方式允许通过行名或列名列明的方式精确访问DataFrame中的元素[^2]。
```python
import pandas as pd
# 创建一个简单的DataFrame用于示范
df = pd.DataFrame({
"姓名": ['甲', '乙', '丙'],
"年龄": [12, 23, 34],
"性别": ['男', '男', '女']
}, index=['one', 'two', 'three'])
print("原始数据:")
print(df)
# 按照行标签'two'和列标签'姓名'来查找具体单元格的内容
specific_cell = df.loc['two', '姓名']
print(f"\n找到的特定单元格内容为: {specific_cell}")
```
#### 使用`iloc`基于位置进行索引
当需要依据数值型的位置而非标签来进行定位时,则应该采用`iloc`属性。这种方式适用于那些不熟悉或者不方便记忆确切行/列名称的情况[^4]。
```python
# 获取第二行第三列的数据项 (注意:Python索引起始于0)
cell_by_position = df.iloc[1, 2]
print(f"\n根据位置得到的结果是: {cell_by_position}")
# 提取出整个某一行的所有字段
row_data = df.iloc[1]
print("\n整行的数据如下所示:")
print(row_data)
```
#### 条件筛选与多条件组合查询
如果想要基于某些逻辑表达式的真假值来过滤出符合条件的记录,那么可以通过传递布尔向量给`.loc[]`完成操作;而对于更复杂的场景比如涉及多个条件的情形,可利用括号分隔各个判断语句并借助逻辑运算符连接起来[^5]。
```python
# 单一条件下的选择——只保留男性成员的信息
male_members = df[df["性别"] == "男"]
print("\n仅限于男性的列表:")
print(male_members)
# 复杂条件下(即满足两个及以上标准)的选择——找出既不是第一个也不是最后一个且年龄大于等于20岁的个体
complex_selection = df[(df.index != 'one') & (df.index != 'three') & (df["年龄"] >= 20)]
print("\n复合条件匹配后的结果集:")
print(complex_selection)
```
阅读全文
相关推荐

















