pandas操作
Posted ttyb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas操作相关的知识,希望对你有一定的参考价值。
python中使用了pandas的一些操作,特此记录下来:
生成DataFrame
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_2'],
'label': ["a,b", 'e,f,g'],
})
print(data)
得到结果为:
label v_id
0 a,b v_1
1 e,f,g v_2
按照逗号分隔并拼接
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_2'],
'label': ["a,b", 'e,f,g'],
})
df = data.drop('label', axis=1).join(data['label'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('label'))
print(df)
得到结果为:
v_id label
0 v_1 a
0 v_1 b
1 v_2 e
1 v_2 f
1 v_2 g
筛选符合条件的行
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_2'],
'label': ["a,b", 'e,f,g'],
})
df = data.drop('label', axis=1).join(data['label'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('label'))
target_label = df.loc[df['label'].isin(["e", "f"])]
print(target_label)
得到结果为:
v_id label
1 v_2 e
1 v_2 f
筛选不符合条件的行
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_2'],
'label': ["a,b", 'e,f,g'],
})
df = data.drop('label', axis=1).join(data['label'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('label'))
other_label = df[~df['label'].isin(["f", "g"])]
print(other_label)
得到结果为:
v_id label
0 v_1 a
0 v_1 b
1 v_2 e
替换某一列的值
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_2'],
'label': ["a,b", 'e,f,g'],
})
df = data.drop('label', axis=1).join(data['label'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('label'))
# 没有copy会出现错误:A value is trying to be set on a copy of a slice from a DataFrame
df = df.copy()
df.loc[df["label"] != "", 'label'] = "1"
print(df)
得到结果为:
v_id label
0 v_1 1
0 v_1 1
1 v_2 1
1 v_2 1
1 v_2 1
取某一列转换成list
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_2'],
'label': ["a,b", 'e,f,g'],
})
df = data.drop('label', axis=1).join(data['label'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('label'))
print(df["label"].values.tolist())
得到结果为:
['a', 'b', 'e', 'f', 'g']
按照某一列去重
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_2'],
'label': ["a,b", 'e,f,g'],
})
df = data.drop('label', axis=1).join(data['label'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('label'))
print(df.drop_duplicates(subset=['v_id']))
得到结果为:
v_id label
0 v_1 a
1 v_2 e
复制dataframe并拼接
import pandas as pd
data = pd.DataFrame({
'v_id': ["v_1", 'v_2'],
'label': ["a,b", 'e,f,g'],
})
df = data.drop('label', axis=1).join(data['label'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('label'))
df_copy = df.copy()
times = 2
for i in range(times):
df_copy = pd.concat([df_copy,df])
print(df_copy)
得到结果为:
v_id label
0 v_1 a
0 v_1 b
1 v_2 e
1 v_2 f
1 v_2 g
0 v_1 a
0 v_1 b
1 v_2 e
1 v_2 f
1 v_2 g
0 v_1 a
0 v_1 b
1 v_2 e
1 v_2 f
1 v_2 g
以上是关于pandas操作的主要内容,如果未能解决你的问题,请参考以下文章
text [检查特定的数据片段]取自论文但有意思应用。 #python #pandas
VSCode自定义代码片段15——git命令操作一个完整流程