您实际上有两个问题。要获取“,”分隔符字符串的项目数,您可以这样做:
import pandas as pd
df = pd.DataFrame(data=["1,1,1,2,2,apple", "apple,orange,1,2"], columns=["list"])
df["count"] = df["list"].apply(lambda x: len(x.split(",")))
print(df)
作为输出:
list count
0 1,1,1,2,2,apple 6
1 apple,orange,1,2 4
我在这里使用了一个 lambda 函数,它对每个项目执行 split 操作(返回字符串中单独项目的列表),然后用 len()计算项目>。您可以使用 apply 方法将 lambda 函数应用于列中的每个项目。
在第二个问题中,您要计算数据框中每个项目的唯一元素。您可以先使用 split 方法将字符串项拆分为单独的列:
df_items = df["list"].str.split(",", expand=True)
print(df_items)
这会给你一个这样的数据框:
0 1 2 3 4 5
0 1 1 1 2 2 apple
1 apple orange 1 2 None None
然后,由于每个唯一项目的位置无关紧要,您可以使用 melt 方法将所有列粘合到一个列中。 melt 方法将所有项目放在一个名为 value 的列中。您可以使用 value_count 获取列的项目数。脚本如下所示:
frequency_count = pd.melt(df_items)['value'].value_counts()
frequency_count.index.name = "list"
frequency_count = pd.DataFrame(frequency_count).rename(columns={"value": "frequency_count"})
给你输出
frequency_count
list
1 4
2 3
apple 2
orange 1