pandas astype 字符串转为list
时间: 2023-07-30 22:04:35 浏览: 243
如果你有一个 Pandas DataFrame 中的某一列是字符串类型,且这个字符串包含多个元素,你可以使用 `apply` 方法和 `split` 函数将其转换为列表类型。
例如,假设有以下 Pandas DataFrame:
```python
import pandas as pd
df = pd.DataFrame({
'col1': ['1,2,3', '4,5', '6,7,8,9'],
'col2': [10, 20, 30]
})
```
其中 `col1` 是字符串类型,包含多个元素,`col2` 是整数类型。你可以使用以下代码将 `col1` 转换为列表类型:
```python
df['col1'] = df['col1'].apply(lambda x: x.split(','))
```
这里使用了 `apply` 方法和 `lambda` 表达式,将每个字符串按照逗号分隔为列表。最后得到以下结果:
```
col1 col2
0 [1, 2, 3] 10
1 [4, 5] 20
2 [6, 7, 8, 9] 30
```
现在 `col1` 的每个元素都是一个列表了。
相关问题
python double list转换成pandas dataframe string
在Python中,将包含双层列表(即嵌套列表)的数据转换为Pandas DataFrame,通常需要先将其组织成DataFrame可以理解的结构,比如字典列表(dicts in lists)。然后你可以使用`pd.DataFrame()`函数创建DataFrame。
例如:
```python
data = [['A', '1', 'John'],
['B', '2', 'Jane'],
['C', '3', 'Mike']]
# 将嵌套列表转换为字典列表
flat_list_of_dicts = [{col: row[i] for i, col in enumerate(['Name', 'ID', 'Person'])} for row in data]
# 创建Pandas DataFrame
df = pd.DataFrame(flat_list_of_dicts)
# 如果你的数据是以字符串形式存储的,可能还需要额外处理,例如:
# df[['ID', 'Person']] = df[['ID', 'Person']].astype(str) # 如果数值需要转换为str
print(df)
```
在这个例子中,`flat_list_of_dicts`是一个字典列表,每一层嵌套对应DataFrame的一列。运行上述代码后,你会得到一个类似这样的DataFrame:
```
Name ID Person
0 A 1 John
1 B 2 Jane
2 C 3 Mike
```
用python代码实现,将A列、B列、C列转换为字符串类型,并将字符串用下划线连接生成D列,再用下划线将D列分割为列表并对列表内的元素去重得到E列,再按照E列中的列表元素拆分为多行
可以使用 pandas 和 set 完成此任务。
假设需要处理的数据如下:
| A | B | C |
| --- | --- | --- |
| 1 | 2 | 3 |
| 4 | 5 | 6 |
可以按照以下步骤进行处理:
```python
import pandas as pd
# 读取数据
df = pd.read_excel('data.xlsx')
# 将 A 列、B 列、C 列转换为字符串类型并拼接为 D 列
df['D'] = df[['A', 'B', 'C']].astype(str).apply(lambda x: '_'.join(x), axis=1)
# 将 D 列按照下划线分割为列表并对列表内的元素去重得到 E 列
df['E'] = df['D'].apply(lambda x: list(set(x.split('_'))))
# 按照 E 列中的列表元素拆分为多行
new_df = pd.DataFrame(columns=['A', 'B', 'C'])
for i, row in df.iterrows():
for value in row['E']:
new_row = row[['A', 'B', 'C']].copy()
new_row['D'] = '_'.join(row['E'])
new_row['E'] = value
new_df = new_df.append(new_row)
# 输出结果
print(new_df)
```
输出结果为:
```
A B C D E
0 1 2 3 1_2_3 1
0 1 2 3 1_2_3 2
0 1 2 3 1_2_3 3
1 4 5 6 4_5_6 4
1 4 5 6 4_5_6 5
1 4 5 6 4_5_6 6
```
可以看到,数据已经按照要求被处理成了多行的形式。
阅读全文