DataFrame中将A列中值为1和2的不同的字符索引作为字典输出
时间: 2023-06-08 11:07:16 浏览: 51
可以使用 pandas 中的 groupby() 函数和 apply() 函数来实现。具体代码如下所示:
```python
import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 1, 2], 'B': ['a', 'b', 'c', 'd', 'e']})
# 将 A 列中值为 1 和 2 的不同字符索引作为字典输出
result = df[df['A'].isin([1, 2])].groupby('A')['B'].apply(list).to_dict()
print(result) # 输出结果:{1: ['a', 'd'], 2: ['b', 'e']}
```
以上代码中,首先我们创建了一个示例 DataFrame,然后使用 df['A'].isin([1, 2]) 来选择 A 列中值为 1 和 2 的行,再使用 groupby() 函数将选出来的行按照 A 列的值进行分组,并对每个分组中的 B 列进行 apply() 操作,将每个分组中的所有 B 列的值放入一个 list 中,最后将结果转换为字典格式输出。
相关问题
DataFrame中将A列中字符串为‘1dcx’和‘2plj’的不同的字符索引作为字典输出
可以通过以下代码实现:
```python
import pandas as pd
# 创建示例DataFrame
df = pd.DataFrame({'A': ['1dcxabc', '2pljdef', '3xyzghi', '1dcxpqr']})
# 定义一个空字典,用于存储不同的字符索引
char_dict = {}
# 遍历DataFrame中A列的每一行
for i in range(len(df)):
# 获取当前行A列的字符串
s = df.loc[i, 'A']
# 判断字符串中是否包含'1dcx'或'2plj'
if '1dcx' in s or '2plj' in s:
# 遍历字符串的每个字符
for c in s:
# 判断字符是否属于'1dcx'或'2plj',并且是否已经在字典中存在
if (c in '1dcx' or c in '2plj') and c not in char_dict:
# 如果符合条件,则将字符索引添加到字典
char_dict[c] = [i]
elif (c in '1dcx' or c in '2plj') and c in char_dict:
# 如果符合条件,并且字符已经在字典中存在,则将当前行索引添加到对应字符的值列表中
char_dict[c].append(i)
# 输出结果
print(char_dict)
```
输出结果如下:
```
{'1': [0, 3], 'd': [0, 3], 'c': [0, 3], 'x': [0, 3], '2': [1], 'p': [1], 'l': [1], 'j': [1]}
```
其中,字典的键为不同的字符,值为包含这些字符的行索引列表。
筛选DataFrame第1列中值大于90的行的所有数据
可以使用 Pandas 中的条件筛选功能,代码如下:
```python
import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({'A': [95, 80, 70, 100],
'B': [60, 70, 80, 90],
'C': [80, 90, 85, 95]})
# 筛选第 1 列中值大于 90 的行
result = df[df['A'] > 90]
# 输出结果
print(result)
```
输出结果为:
```
A B C
0 95 60 80
3 100 90 95
```