总结 pandas DataFrame
Summarize pandas DataFrame
我想总结一下pandas DataFrame文件。这个是这样的->
City Name Date
London Joey 1998
Vegas Chandler 1999
所以结果会是这样的。 1998 年,乔伊在伦敦。 1999 年,钱德勒在拉斯维加斯。
像这样的东西。有什么解决方法吗?或者哪些模块可以帮助我做到这一点?
谢谢。
有了这个 csv:
City,Name,Date
London,Joey,1998
Vegas,Chandler,1999
您可以使用以下代码:
import pandas as pd
df = pd.read_csv("test.csv")
for i in range(len(df)):
print(f"In {df.iloc[i,2]}, {df.iloc[i,0]} was in {df.iloc[i,1]}.")
它遍历数据帧的行,并使用字符串中的格式前缀使用 df.iloc
.
打印包含每行值的句子
要解决这个问题,您实际上只需要遍历行即可。使用列表理解会比使用 `iterrows:
更快
如果要修改DataFrame:
在这里,我们使用 DataFrame.apply
来“应用”每一行的函数:
def format_row(row):
return f"In {row['Date']}, {row['Name']} was in {row['City']}."
df = df.apply(lambda r: format_row(r), axis=1)
print(df)
输出:
0 In 1998, Joey was in London.
1 In 1999, Chandler was in Vegas.
如果你想得到句子列表:
您可以定义一个格式化行的函数,如下所示:
def format_row(row):
return f"In {row[0]}, {row[1]} was in {row[2]}."
然后使用列表理解zip
相应的行并将其传递给函数。
rows = [format_row(r) for r in zip(df["Date"], df["Name"], df["City"])]
如果这些列是 DataFrame
中唯一的列,使用 DataFrame.values
会更干净,但提供相同的输出:
rows = [format_row(r) for r in df.values]
在这种情况下,您必须在函数内交换索引值:
return f"In {row[2]}, {row[1]} was in {row[0]}."
给定数据
df=pd.DataFrame(data=[['London','Joey','1998'],['Vegas','Chandler','1999']],columns=['City','Name','Date'])
如果需要,可以添加一个新列作为摘要,或者您可以按照@gmdev 的建议将其放在列表中。
df['Summary']=df.apply(lambda x: 'In '+str(x.Date)+' '+str(x.Name)+' was in '+str(x.City),axis=1)
我想总结一下pandas DataFrame文件。这个是这样的->
City Name Date
London Joey 1998
Vegas Chandler 1999
所以结果会是这样的。 1998 年,乔伊在伦敦。 1999 年,钱德勒在拉斯维加斯。 像这样的东西。有什么解决方法吗?或者哪些模块可以帮助我做到这一点? 谢谢。
有了这个 csv:
City,Name,Date
London,Joey,1998
Vegas,Chandler,1999
您可以使用以下代码:
import pandas as pd
df = pd.read_csv("test.csv")
for i in range(len(df)):
print(f"In {df.iloc[i,2]}, {df.iloc[i,0]} was in {df.iloc[i,1]}.")
它遍历数据帧的行,并使用字符串中的格式前缀使用 df.iloc
.
要解决这个问题,您实际上只需要遍历行即可。使用列表理解会比使用 `iterrows:
更快如果要修改DataFrame:
在这里,我们使用 DataFrame.apply
来“应用”每一行的函数:
def format_row(row):
return f"In {row['Date']}, {row['Name']} was in {row['City']}."
df = df.apply(lambda r: format_row(r), axis=1)
print(df)
输出:
0 In 1998, Joey was in London.
1 In 1999, Chandler was in Vegas.
如果你想得到句子列表:
您可以定义一个格式化行的函数,如下所示:
def format_row(row):
return f"In {row[0]}, {row[1]} was in {row[2]}."
然后使用列表理解zip
相应的行并将其传递给函数。
rows = [format_row(r) for r in zip(df["Date"], df["Name"], df["City"])]
如果这些列是 DataFrame
中唯一的列,使用 DataFrame.values
会更干净,但提供相同的输出:
rows = [format_row(r) for r in df.values]
在这种情况下,您必须在函数内交换索引值:
return f"In {row[2]}, {row[1]} was in {row[0]}."
给定数据
df=pd.DataFrame(data=[['London','Joey','1998'],['Vegas','Chandler','1999']],columns=['City','Name','Date'])
如果需要,可以添加一个新列作为摘要,或者您可以按照@gmdev 的建议将其放在列表中。
df['Summary']=df.apply(lambda x: 'In '+str(x.Date)+' '+str(x.Name)+' was in '+str(x.City),axis=1)